使用dict.pop()
:
my_dict.pop('key', None)
这将返回my_dict[key]
如果key
在字典中存在,并None
其他。如果未指定所述第二参数(即my_dict.pop('key')
和key
不存在,一个KeyError
上升。
特别回答 “有这样一种方式吗?”
if 'key' in myDict: del myDict['key']
...... 好吧,你问 ;-)
但是,您应该考虑这种从dict
中删除对象的方式不是原子的 - 在if
语句中可能是'key'
可能在myDict
中,但是在del
执行之前可能会被删除,在这种情况下del
会失败并出现KeyError
。鉴于此, 使用dict.pop
或类似的东西是最安全的
try:
del myDict['key']
except KeyError:
pass
当然,这绝对不是一个单行。
我花了一些时间来弄清楚my_dict.pop("key", None)
到底在做什么。所以我将这个作为一个答案,以节省其他人的谷歌搜索时间:
pop(key [,default])
如果 key 在字典中,则将其删除并返回其值,否则返回 default。如果未给出 default 并且 key 不在字典中,则引发 KeyError