默默地从python dict中删除密钥

时间:2012-07-06 08:17:22

标签: python dictionary

我有一个python dict,我想静静地从我的字典中删除None''键,所以我想出了类似的东西:

try:
    del my_dict[None]
except KeyError:
    pass

try:
    del my_dict['']
except KeyError:
   pass

如您所见,它的可读性较差,导致我编写重复的代码。所以我想知道python中是否有一个方法从dict中删除任何键而不抛出键错误?

4 个答案:

答案 0 :(得分:70)

你可以这样做:

d.pop("", None)
d.pop(None, None)

使用您忽略的默认值弹出字典。

答案 1 :(得分:10)

您可以使用dict.pop方法并忽略结果:

for key in [None, '']:
    d.pop(key, None)

答案 2 :(得分:3)

您可以尝试:

d = dict((k, v) for k,v in d.items() if k is not None and k != '')

或删除所有类似空的键

d = dict((k, v) for k,v in d.items() if k )

答案 3 :(得分:1)

以下将删除密钥(如果存在),并且不会抛出错误:

for d in [None, '']:
    if d in my_dict:
        del my_dict[d]