python - Python中的多级 'collection.defaultdict'

感谢 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

我怀疑我应该在某处声明第二级 defaultdictint 类型,但我没有找到在哪里或如何这样做。

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

还有更优雅的建议吗?

感谢pythoneers!

最佳答案

用途:

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

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

https://stackoverflow.com/questions/2600790/

相关文章:

python - 将迭代器转换为列表的最快方法

python - virtualenv和pyenv是什么关系?

linux - 如何仅在脚本期间设置环境变量?

linux - 在新的 linux 内核中上下文切换要慢得多

python - 为什么函数可以修改调用者感知的某些参数,而不能修改其他参数?

python - 为什么我们不应该在 py 脚本中使用 sys.setdefaultencoding

linux - 为Linux目录下新创建的文件和子目录设置默认权限?

linux - 如何使用 Red Hat Linux 上的标准工具随机化文件中的行?

linux - 如何链接到特定的 glibc 版本?

python - Python 中 dict.clear() 和分配 {} 的区别