如何在Python中过滤字典?
d = {'foo': 'x',
'bar': 'y',
'zoo': 'None',
'foobar': 'None'}
我想筛选出所有值为 'None'
的项目,并用一个特定的值来更新 foo
和 bar
这两个项目。我试过:
for i in x.items():
....: if i[i] == 'None':
....: x.pop(i[0])
....: else:
....: x.update({i[0]:'updated'})
但是没有成功。
5 个回答
2
像这样的代码应该可以正常工作
>>> for x in [x for x in d.keys() if d[x] == 'None']:
d.pop(x)
15
你提到的 'updated'
这个值来源不太明确,不过一般来说,它的写法应该是这样的:
{i: 'updated' for i, j in d.items() if j != 'None'}
适用于 Python 2.7 或更新版本。
22
你发的字典里,'None'
到底是什么还不太清楚。如果它是一个字符串,你可以用下面的代码:
dict((k, 'updated') for k, v in d.items() if v != 'None')
如果它是None
,那就换一种检查方式,比如:
dict((k, 'updated') for k, v in d.items() if v is None)
(如果你还在用Python 2,就把.items()
换成.iteritems()
)