Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在对象中找到值为none并使用Python3删除键和值?_Python_Python 3.x - Fatal编程技术网

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

如何在对象中找到值为none并使用Python3删除键和值?,python,python-3.x,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) &

我有一个对象,我想找到的值是
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'}

有更好的方法吗?

您可以使用字典理解:

obj = {k: v for k, v in obj.items() if v is not None}
如果您不想大量替换词典(因为您可能有其他引用),那么您的方法是合理的,但是可以通过避免调用
.keys()
,并使用
del
而不是
dict.pop()
,来提高效率:


测试
None
时应始终使用
is
;这是一个单例对象。

这种方法有什么问题?@ScottHunter我只想找到一种更好的方法来实现这一点注意,
keys=list(obj)
可以为键保存属性查找和创建dict视图。
for key in list(obj):
    if obj[key] is None:
        del obj[key]