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

Chr*_*row 8 python dictionary

有没有一种简单的方法可以在Python中删除字典属性时可能不存在该属性?

如果使用该del语句,则结果是KeyError:

a = {}
del a['foo']
>>>KeyError: 'foo'
Run Code Online (Sandbox Code Playgroud)

它有点罗嗦使用if语句,你必须输入'foo'a两次:

a = {}
if 'foo' in a:
    del a['foo']
Run Code Online (Sandbox Code Playgroud)

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

a = {}
a.get('foo')  # Returns None, does not raise error
Run Code Online (Sandbox Code Playgroud)

iCo*_*dez 10

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

>>> d = {1:1, 2:2}
>>> d.pop(1, None)
1
>>> d
{2: 2}
>>> d.pop(3, None)  # No error is thrown
>>> d
{2: 2}
>>>
Run Code Online (Sandbox Code Playgroud)