最佳答案
感谢SO上的一些伟大的人,我发现了collections.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!