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

当试图从字典中删除密钥时,我写道:

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

有没有一种方法可以做到这一点?


使用dict.pop()

my_dict.pop('key', None)

如果key存在于字典中,这将返回my_dict[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(键[,默认])

如果键在字典中,请将其删除并返回其值,否则返回默认值。 如果未给出默认值并且键不在字典中,则会引发KeyError

文档

链接地址: http://www.djcxy.com/p/2901.html

上一篇: How to remove a key from a python dictionary?

下一篇: Map two lists into a dictionary in Python