是否有一种从字典中删除键而不引发 KeyError
的单行方法?
if 'key' in my_dict:
del my_dict['key']
原文由 Tony 发布,翻译遵循 CC BY-SA 4.0 许可协议
是否有一种从字典中删除键而不引发 KeyError
的单行方法?
if 'key' in my_dict:
del my_dict['key']
原文由 Tony 发布,翻译遵循 CC BY-SA 4.0 许可协议
专门回答“有没有一种方法可以做到这一点?”
if 'key' in my_dict: del my_dict['key']
…好吧,你 问 了 ;-)
但是,您应该考虑,这种从 dict
中删除对象的方式 不是原子 的 — 'key'
可能在 my_dict
if
cb6b 中 ---
statement, but may be deleted before del
is executed, in which case del
will fail with a KeyError
.鉴于此,最安全的方法是 使用 dict.pop
或类似
try:
del my_dict['key']
except KeyError:
pass
当然,这绝对 不是 单行的。
原文由 zigg 发布,翻译遵循 CC BY-SA 4.0 许可协议
3 回答3.1k 阅读✓ 已解决
2 回答1.9k 阅读✓ 已解决
2 回答1.3k 阅读✓ 已解决
2 回答1.8k 阅读✓ 已解决
4 回答1.8k 阅读
3 回答1.7k 阅读
1 回答1.4k 阅读✓ 已解决
要删除一个键,无论它是否在字典中,请使用
dict.pop()
的两个参数形式:这将返回
my_dict[key]
如果key
存在于字典中,否则返回None
。如果未指定第二个参数(即my_dict.pop('key')
)并且key
不存在,则会引发KeyError
。要删除保证存在的键,您还可以使用:
如果密钥不在字典中,这将引发
KeyError
。