嵌套字典,默认值

时间:2018-04-05 12:42:53

标签: python dictionary counter defaultdict

有没有办法制作嵌套字典,以便我可以说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,但这不允许您假设一个默认值然后递增。

1 个答案:

答案 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是为了增加整数的特定目的而创建的,这将是我更喜欢的方法。