有没有办法制作一个嵌套字典,这样我就可以说 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 是为递增整数的特定目的而创建的,这将是我更喜欢的方法。
