感謝SO上的一些偉人,我發現了collections.defaultdict
提供的可能性,特別是在可讀性和速度方面。我已經把它們用於成功。現在Python中多個級別的'collection.defaultdict'
我想實現三個層次的詞典,兩個頂部的莫過於defaultdict
和最低的一個是int
。我沒有找到適當的方法來做到這一點。這裏是我的嘗試:
from collections import defaultdict
d = defaultdict(defaultdict)
a = [("key1", {"a1":22, "a2":33}),
("key2", {"a1":32, "a2":55}),
("key3", {"a1":43, "a2":44})]
for i in a:
d[i[0]] = i[1]
現在這個工作,但以下,這是需要的行爲,並不:
d["key4"]["a1"] + 1
我懷疑,我應該在什麼地方宣佈第二級defaultdict
類型爲int
,但我沒有找到在哪裏或如何去做。
我首先使用defaultdict
的原因是爲了避免爲每個新密鑰初始化字典。
更優雅的建議?
感謝pythoneers!
唯一的問題是它不會pickle,這意味着'multiprocessing'不喜歡發送這些來回。 – Noah 2012-03-27 16:49:32
@Noah:如果你使用一個命名的模塊級函數而不是lambda表達式,它會醃製。 – interjay 2012-03-27 17:28:38
當然,傻了我。 – Noah 2012-03-27 19:16:38