70

我有一个 python dict,我想从我的字典中默默地删除其中一个None''键,所以我想出了这样的东西:

try:
    del my_dict[None]
except KeyError:
    pass

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

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

4

4 回答 4

123

你可以这样做:

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

弹出带有您忽略的默认值的字典。

于 2012-07-06T08:23:36.803 回答
13

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

for key in [None, '']:
    d.pop(key, None)
于 2012-07-06T08:22:21.587 回答
3

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

for d in [None, '']:
    if d in my_dict:
        del my_dict[d]
于 2012-07-06T08:20:19.193 回答
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 )
于 2012-07-06T08:24:44.370 回答