如何在对象中找到值为none并使用Python3删除键和值?

Cha*_* Wu -1 python python-3.x

我有一个对象,我想找到的值是None.下一步我想删除密钥.我这样试试:

>>> obj = {'a': '1', 'b': '2', 'c': '3', 'd': None, 'e': '4', 'f': None }
>>> keys = list(obj.keys())
>>> for key in keys:
...     if obj[key] == None:
...         obj.pop(key, None)
>>> obj
{'a': '1', 'b': '2', 'c': '3', 'e': '4'}
Run Code Online (Sandbox Code Playgroud)

有一个更好的方法吗?

Mar*_*ers 6

您可以使用字典理解:

obj = {k: v for k, v in obj.items() if v is not None}
Run Code Online (Sandbox Code Playgroud)

如果你不想替换字典批发(因为你可能有其它的引用),那么你的方法是合理的,但是仍然可以通过避免调用.keys()和使用del而不是dict.pop():

for key in list(obj):
    if obj[key] is None:
        del obj[key]
Run Code Online (Sandbox Code Playgroud)

None应始终进行测试is; 它是一个单身对象.