有谁知道 Python 中是否有用于无限嵌套字典的标准类?
我发现自己在重复这个模式:
d = defaultdict(lambda: defaultdict(lambda: defaultdict(int)))
d['abc']['def']['xyz'] += 1
如果我想添加“另一层”(例如 d['abc']['def']['xyz']['wrt']
),我必须定义另一个嵌套的 defaultdicts。
为了推广这种模式,我编写了一个简单的类来覆盖 __getitem__
以自动创建下一个嵌套字典。
例如
d = InfiniteDict(('count',0),('total',0))
d['abc']['def']['xyz'].count += 0.24
d['abc']['def']['xyz'].total += 1
d['abc']['def']['xyz']['wrt'].count += 0.143
d['abc']['def']['xyz']['wrt'].total += 1
但是,有人知道这个想法的预先存在的实现吗?我试过谷歌搜索,但我不确定这会叫什么。
最佳答案
我认为这个单行代码是一个近乎完美的解决方案:
>>> from collections import defaultdict
>>> infinite_defaultdict = lambda: defaultdict(infinite_defaultdict)
>>> d = infinite_defaultdict()
>>> d['x']['y']['z'] = 10
由 Raymond Hettinger 在 Twitter 上发布(https://twitter.com/raymondh/status/343823801278140417)
关于python - 无限嵌套的 defaultdict 是否有标准类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4178249/