有没有办法更新 Python 字典的值,但如果它不存在,则不添加密钥?



我有一个这样的字典:

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'

相关内容

  • 没有找到相关文章

最新更新