Я хочу установить ключи и значения в словаре. Вот пример того, что я делаю.Вложенный, бесконечный словарь в python
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. Может быть, есть лучшее решение?
Спасибо.
это потому, что ваш с [ «а»] [ «d»] не имеет значения, так что ваши инициировать его и хотите увеличить что-то. juste do c ['a'] ['d'] = 0, тогда вы можете сделать то, что хотите – lpostula
, когда вы пишете 'c [someNonExistingKey] + = 1', какой результат вы хотите? – georg
Я знаю, но я хочу написать что-то, что автоматически установило бы 0 сначала, если не будет использовано значение = + – eshlox