如何从 Python 字典中删除一个键?
如果存在键,我想从字典中删除该键。我目前使用此代码:
if key in my_dict:
del my_dict[key]
如果没有
if
语句,如果键
不存在
,代码将引发
KeyError
。我该如何更简单地处理这个问题?
请参阅 从字典中删除元素 ,了解从字典中删除键的更多通用方法(包括生成修改副本的方法)。
要删除某个键,无论它是否存在于字典中,请使用
dict.pop()
的双参数形式:
my_dict.pop('key', None)
如果字典中存在
key
,则此操作将返回
my_dict[key]
,否则返回
None
。如果未指定第二个参数(即
my_dict.pop('key')
)并且
key
不存在,则会引发
KeyError
。
要删除保证存在的键,您还可以使用
del my_dict['key']
如果键不在字典中,这将引发
KeyError
。
具体来说,要回答“是否有一行方法可以做到这一点?”
if 'key' in my_dict: del my_dict['key']
……好吧,你 问 了 ;-)
但是,您应该考虑到,这种从
dict
中删除对象的方式
不是原子的
- 有可能
'key'
在
if
语句期间可能位于
my_dict
中,但可能在执行
del
之前被删除,在这种情况下
del
将失败并出现
KeyError
。鉴于此,最安全的做法是
使用
dict.pop
或类似
try:
del my_dict['key']
except KeyError:
pass
的语句,当然,这绝对 不是 一行代码。
我花了一些时间才弄清楚
my_dict.pop("key", None)
到底在做什么。所以我将添加此答案以节省其他人的谷歌搜索时间:
pop(key[, default])
If key is in the dictionary, remove it and return its value, else return default . If default is not given and key is not in the dictionary, a
KeyError
is raised.