我有一个这样的字典:
d = {'a': 1, 'b': 2, 'c': 3}
我想更新键'c'
的值,可以用d['c'] = 30
来做。
我想要的行为是只能更新现有密钥,不能添加新密钥。如果我尝试做d['e'] = 4
,我希望它抛出某种异常,而不是默认行为,即创建一个值为4
的新键'e'
。
是否有这样的函数?我知道我可以做一个理解首先检查if 'e' in d
,但再次检查是否有一个内置的。
我不知道内置有这样的行为,但是您总是可以实现自己的字典:
class no_new_dict(dict):
def __setitem__(self, key, value):
if key in self:
super().__setitem__(key, value)
else:
raise KeyError(key)
d = no_new_dict({'a': 1, 'b': 2, 'c': 3})
print(d)
d['c'] = 20
print(d)
d['d'] = 20
上面代码片段的输出将是:
{'a': 1, 'b': 2, 'c': 3}
{'a': 1, 'b': 2, 'c': 20}
Traceback (most recent call last):
File "C:UserstomerkPycharmProjectspythonProjecttest.py", line 12, in <module>
d['d'] = 20
File "C:UserstomerkPycharmProjectspythonProjecttest.py", line 6, in __setitem__
raise KeyError(key)
KeyError: 'd'