有没有办法制作嵌套字典,以便我可以说mydict[x][y][z] += 1
,其中mydict[x][y][z]
以前不存在,默认为0(增量后为1)?
我查看了类似问题的答案,您可以使用mydict[x][y][z] = 1
类(Declaring a multi dimensional dictionary in python)中的defaultdict
来说collections
,但这不允许您假设一个默认值然后递增。
答案 0 :(得分:7)
是的,您可以使用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
是为了增加整数的特定目的而创建的,这将是我更喜欢的方法。