协慌网

登录 贡献 社区

如何从 Python 字典中删除密钥?

当我试图从字典中删除一个键时,我写道:

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

有这样一种方式吗?

答案

使用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

文档