Python 带默认值的嵌套字典

Python 带默认值的嵌套字典,python,dictionary,counter,defaultdict,Python,Dictionary,Counter,Defaultdict,有没有一种方法可以制作一个嵌套字典,这样我就可以说mydict[x][y][z]+=1,其中mydict[x][y][z]以前不存在,默认值为0(递增后为1) 我研究了一个类似问题的答案,在这个问题中,您可以使用collections类()中的defaultdict说mydict[x][y][z]=1,但这不允许您假设默认值然后递增。是的,您可以使用collections模块执行此操作: from collections import defaultdict, Counter d = defa

有没有一种方法可以制作一个嵌套字典,这样我就可以说
mydict[x][y][z]+=1
,其中
mydict[x][y][z]
以前不存在,默认值为0(递增后为1)


我研究了一个类似问题的答案,在这个问题中,您可以使用
collections
类()中的
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
(或
计数器
):
mydict=defaultdict(int);mydict[(x,y,z)]+=1
d = defaultdict(lambda: defaultdict(lambda: defaultdict(int)))