【发布时间】:2012-03-20 09:12:05
【问题描述】:
我想在字典中设置键和值。这是我所做的一个示例。
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 相同。也许有更好的解决方案?
谢谢。
【问题讨论】:
-
这是因为你的 c['a']['d'] 没有值,所以你启动它并想要增加一些东西。 juste do c['a']['d'] = 0 然后你可以做你想要的
-
当你写
c[someNonExistingKey] +=1时,你想要什么结果? -
我知道,但我想写一些如果没有值会自动设置为 0 并被使用 =+
-
如果我说
c[non_existing_key],它应该返回NestedDict还是0?
标签: python dictionary