gpt4 book ai didi

python - python中的嵌套无限字典

转载 作者:行者123 更新时间:2023-11-28 19:40:31 24 4
gpt4 key购买 nike

我想在字典中设置键和值。这是我所做的一个例子。

class NestedDict(dict):
def __getitem__(self, key):
if key in self: return self.get(key)
return self.setdefault(key, NestedDict())

>>> c = NestedDict()
>>> c
{}
>>> c['a']['b'] = 'test'
>>> c['a']['c'] = 2
>>> c
{'a': {'c': 2, 'b': 'test'}}
>>> c['a']['c'] += 1
>>> c
{'a': {'c': 3, 'b': 'test'}}
>>> c['a']['d'] += 1
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +=: 'NestedDict' and 'int'

有什么办法解决这个问题吗?我希望能够使用 += 和 -=。当然,如果值不存在,则 += 1 与 = 1 相同。也许有更好的解决方案?

谢谢。

最佳答案

由于 dc['a'] 中不存在,当您尝试添加 1 时,您期望什么样的行为到吗?它会先调用__getitem__,没有找到key然后返回一个NestedDict,它不支持与int的就地加法。

旁注,在我看来,您似乎正在尝试实现具有“默认”值的字典。我会像这样使用集合模块中可用的 defaultdict 类

from collections import defaultdict

def create_nested_dict():
return defaultdict(create_nested_dict)

c = create_nested_dict()

关于python - python中的嵌套无限字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9783983/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com