如何从 Python 字典中删除键?

新手上路,请多包涵

是否有一种从字典中删除键而不引发 KeyError 的单行方法?

 if 'key' in my_dict:
    del my_dict['key']

原文由 Tony 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
2 个回答

要删除一个键,无论它是否在字典中,请使用 dict.pop() 的两个参数形式:

 my_dict.pop('key', None)

这将返回 my_dict[key] 如果 key 存在于字典中,否则返回 None 。如果未指定第二个参数(即 my_dict.pop('key') )并且 key 不存在,则会引发 KeyError

要删除保证存在的键,您还可以使用:

 del my_dict['key']

如果密钥不在字典中,这将引发 KeyError

原文由 Sven Marnach 发布,翻译遵循 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 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏