删除python中可能存在或可能不存在的字典属性

Delete a property of a dictionary in Python that may or may not be present

本问题已经有最佳答案,请猛点这里访问。

在python中,当属性可能不存在时,是否有一种简单的方法可以删除字典的属性?

如果使用del语句,则会产生keyError:

1
2
3
a = {}
del a['foo']
>>>KeyError: 'foo'

使用if语句有点冗长,必须键入'foo'a两次:

1
2
3
a = {}
if 'foo' in a:
    del a['foo']

寻找类似于dict.get()的东西,如果不存在该属性,则默认为None值:

1
2
a = {}
a.get('foo')  # Returns None, does not raise error

您可以使用dict.pop,它允许您指定在密钥不存在时返回的默认值:

1
2
3
4
5
6
7
8
9
>>> d = {1:1, 2:2}
>>> d.pop(1, None)
1
>>> d
{2: 2}
>>> d.pop(3, None)  # No error is thrown
>>> d
{2: 2}
>>>