簡體   English   中英

需要一個值為兩個列表的 defaultdict

[英]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]]})

它不是某種類型推斷,您只是提供一個生成默認值的函數。 而沒有參數的intlistdict生成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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM