开发者问题收集

如何从 Python 字典中删除一个键?

2012-06-30
2806847

如果存在键,我想从字典中删除该键。我目前使用此代码:

if key in my_dict:
    del my_dict[key]

如果没有 if 语句,如果键 不存在 ,代码将引发 KeyError 。我该如何更简单地处理这个问题?


请参阅 从字典中删除元素 ,了解从字典中删除键的更多通用方法(包括生成修改副本的方法)。

3个回答

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

my_dict.pop('key', None)

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

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

del my_dict['key']

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

Sven Marnach
2012-06-30

具体来说,要回答“是否有一行方法可以做到这一点?”

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

的语句,当然,这绝对 不是 一行代码。

Mattie
2012-06-30

我花了一些时间才弄清楚 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.

文档

Akavall
2013-03-04