感谢 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!
最佳答案
用途:
from collections import defaultdict
d = defaultdict(lambda: defaultdict(int))
每当在 d
中访问新键时,这将创建一个新的 defaultdict(int)
。
https://stackoverflow.com/questions/2600790/