有没有办法制作一个嵌套字典,这样我就可以说mydict[x][y][z] += 1
, where mydict[x][y][z]
以前不存在,默认为 0(递增后为 1)?
我研究了类似问题的答案,你可以说mydict[x][y][z] = 1
using defaultdict
来自collections
class (在python中声明一个多维字典 https://stackoverflow.com/questions/29348345/declaring-a-multi-dimensional-dictionary-in-python),但这不允许您采用默认值然后递增。
是的,您可以使用collections
module:
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
是为了增加整数的特定目的而创建的,这将是我更喜欢的方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)