[英]Need a defaultdict with values as two lists
在 Python 中,我想要類似的東西
dict = defaultdict((list,list))
本質上,每個鍵我都想要兩個列表!
使用上面的代碼片段,我得到錯誤第一個參數必須是可調用的。 我怎樣才能做到這一點?
給defaultdict
一個創建空列表的函數作為參數:
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]]})
它不是某種類型推斷,您只是提供一個生成默認值的函數。 而沒有參數的int
、 list
、 dict
生成0
、 []
、 {}
,這在 defaultdict 聲明中經常被利用。 Python 沒有內置的構造函數用於列表對等。所以它很簡單
di = defaultdict(lambda : ([1,2,3], ['a', 'cb']))
雖然 Python 允許列表元組(對),但您可能會遇到一些問題,例如列表元組的散列。 為了安全起見,您可以將默認設置為兩個列表的列表。 請注意,您已將其設置為特定列表,無論是否為空,而不是列表類型/構造函數。 它實際上是關於設置默認值而不是類型聲明——python 列表是無類型的。
from collections import defaultdict
l1 = []
l2 = ["another", "default", "list"]
di = defaultdict(lambda : [ l1, l2] )
print (di[3])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.