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

67 浏览
0 Comments

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

我想在字典中删除一个键(如果存在)。 我目前使用以下代码:

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

如果没有 if 语句,代码将引发 KeyError 如果该键不存在。 有什么更简单的方法处理这个问题吗?


有关从字典中删除键的更一般方法(包括生成修改后副本的方法),请参见删除字典中的元素

admin 更改状态以发布 2023年5月23日
0
0 Comments

专门回答“有没有一行代码可以做到这一点?”

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

......好吧,你问了;-)

但是,你应该考虑到,从一个 dict 中删除对象的这种方式是非原子性的 - 在 if 语句期间 'key' 可能在 my_dict 中,但在执行 del 之前可能被删除,在这种情况下,del 将因 KeyError 而失败。 鉴于此,最安全的方法是要么使用 dict.pop,要么使用以下类似方法:

try:
    del my_dict['key']
except KeyError:
    pass

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

0
0 Comments

为了删除字典中的键,无论该键是否存在,可以使用带有两个参数的dict.pop()形式:

my_dict.pop('key', None)

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

如果要删除保证存在的键,也可以使用:

del my_dict['key']

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

0