如何从 Python 字典中删除一个键?
如何从 Python 字典中删除一个键?
我想在字典中删除一个键(如果存在)。 我目前使用以下代码:
if 'key' in my_dict: del my_dict['key']
如果没有 if
语句,代码将引发 KeyError
如果该键不存在。 有什么更简单的方法处理这个问题吗?
有关从字典中删除键的更一般方法(包括生成修改后副本的方法),请参见删除字典中的元素。
admin 更改状态以发布 2023年5月23日
专门回答“有没有一行代码可以做到这一点?”
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
当然,这绝对不是一行代码。
为了删除字典中的键,无论该键是否存在,可以使用带有两个参数的dict.pop()
形式:
my_dict.pop('key', None)
如果 key
存在于字典中,这将返回 my_dict[key]
,否则返回 None
。 如果未指定第二个参数(即 my_dict.pop('key')
),并且 key
不存在,则会引发 KeyError
。
如果要删除保证存在的键,也可以使用:
del my_dict['key']
如果该键不在字典中,这将引发一个 KeyError
。