我有一本这样的字典:
d = {'a': 1, 'b': 2, 'c': 3}
我想更新键 'c'
的值,并且可以使用 d['c'] = 30
来实现。
我想要的行为是只能更新现有密钥,而不是添加新密钥。如果我尝试执行 d['e'] = 4
,我希望它抛出某种异常,而不是默认行为,即创建一个值为 'e'
的新键 4
。
是否有执行此类行为的函数?我知道我可以先检查 if 'e' in d
,但再次检查是否有内置函数。
答案 0 :(得分:2)
我不知道这种内置行为,但你总是可以实现你自己的字典:
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:\Users\tomerk\PycharmProjects\pythonProject\test.py", line 12, in <module>
d['d'] = 20
File "C:\Users\tomerk\PycharmProjects\pythonProject\test.py", line 6, in __setitem__
raise KeyError(key)
KeyError: 'd'