Skip to main content
 首页 » 编程设计

python之带默认值的嵌套字典

2025年05月04日11wuhuacong

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

我调查了一个类似问题的答案,您可以使用 集合中的 defaultdict 说 mydict[x][y][z] = 1 类 ( Declaring a multi dimensional dictionary in 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})})}) 

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

d = defaultdict(lambda: defaultdict(lambda: defaultdict(int))) 

但是,考虑到 Counter 是为递增整数的特定目的而创建的,这将是我更喜欢的方法。