小编典典

Python中的多级'collection.defaultdict'

all

感谢 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是 type int,但我没有找到在哪里或如何这样做。

defaultdict首先使用的原因是避免必须为每个新键初始化字典。

还有更优雅的建议吗?

谢谢蟒蛇!


阅读 87

收藏
2022-07-14

共1个答案

小编典典

利用:

from collections import defaultdict
d = defaultdict(lambda: defaultdict(int))

defaultdict(int)每当在 中访问新密钥时,这将创建一个新密钥d

2022-07-14