有没有办法制作一个嵌套字典,这样我就可以说 mydict[x][y][z] += 1
,其中 mydict[x][y][ z]
以前不存在,默认为 0(递增后为 1)?
我调查了一个类似问题的答案,您可以使用 集合中的
类 ( Declaring a multi dimensional dictionary in python ),但这不允许您假定默认值然后递增。defaultdict
说 mydict[x][y][z] = 1
最佳答案
是的,您可以使用 collections
模块来做到这一点:
from collections import defaultdict, Counter
d = defaultdict(lambda: defaultdict(lambda: Counter()))
d['A']['B']['C'] += 1
# defaultdict(<function __main__.<lambda>>,
# {'A': defaultdict(<function __main__.<lambda>.<locals>.<lambda>>,
# {'B': Counter({'C': 1})})})
请注意,这也可以通过仅使用嵌套的 defaultdict
实现:
d = defaultdict(lambda: defaultdict(lambda: defaultdict(int)))
但是,考虑到 Counter
是为递增整数的特定目的而创建的,这将是我更喜欢的方法。
关于python - 带默认值的嵌套字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49672708/