brt*_*381 1 python counter dictionary defaultdict
有没有办法制作一个嵌套字典,我可以说mydict[x][y][z] += 1,mydict[x][y][z]以前没有的地方,默认为0(增量后会是1)?
我看着回答类似的问题中,你可以说mydict[x][y][z] = 1用defaultdict从collections类(声明Python中的多维字典),但是,这并不让你采用默认值,然后递增.
是的,您可以使用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是为了增加整数的特定目的而创建的,这将是我更喜欢的方法.