嵌套字典,默认值

brt*_*381 1 python counter dictionary defaultdict

有没有办法制作一个嵌套字典,我可以说mydict[x][y][z] += 1,mydict[x][y][z]以前没有的地方,默认为0(增量后会是1)?

我看着回答类似的问题中,你可以说mydict[x][y][z] = 1defaultdictcollections类(声明Python中的多维字典),但是,这并不让你采用默认值,然后递增.

jpp*_*jpp 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})})})
Run Code Online (Sandbox Code Playgroud)

请注意,这也可以通过仅使用嵌套来实现defaultdict:

d = defaultdict(lambda: defaultdict(lambda: defaultdict(int)))
Run Code Online (Sandbox Code Playgroud)

但是,给定Counter是为了增加整数的特定目的而创建的,这将是我更喜欢的方法.