2 回答

TA貢獻(xiàn)1890條經(jīng)驗 獲得超9個贊
作為參數(shù)提供給defaultdict創(chuàng)建空列表的函數(shù):
from collections import defaultdict
def pair_of_lists():
return [[], []]
d = defaultdict(pair_of_lists)
d[1][0].append(3)
d[1][1].append(42)
print(d)
# defaultdict(<function pair_of_lists at 0x7f584a40b0d0>, {1: [[3], [42]]})

TA貢獻(xiàn)1820條經(jīng)驗 獲得超10個贊
它不是某種類型推斷,您只是提供一個生成默認(rèn)值的函數(shù)。While int, list,dict沒有參數(shù) generate 0, [], {},這在 defaultdict 聲明中經(jīng)常被利用。Python 沒有內(nèi)置的構(gòu)造函數(shù)用于列表對等。所以它很簡單
di = defaultdict(lambda : ([1,2,3], ['a', 'cb']))
雖然 Python 允許列表元組(對),但您可能會遇到一些問題,例如列表元組的散列。為了安全起見,您可以將默認(rèn)設(shè)置為兩個列表的列表。請注意,您已將其設(shè)置為特定列表,無論是否為空,而不是列表類型/構(gòu)造函數(shù)。它實際上是關(guān)于設(shè)置默認(rèn)值而不是類型聲明——python 列表是無類型的。
from collections import defaultdict
l1 = []
l2 = ["another", "default", "list"]
di = defaultdict(lambda : [ l1, l2] )
print (di[3])
添加回答
舉報