如何在Python中过滤字典?

10 投票
5 回答
27182 浏览
提问于 2025-04-16 08:45
d = {'foo': 'x',
     'bar': 'y',
     'zoo': 'None',
     'foobar': 'None'}

我想筛选出所有值为 'None' 的项目,并用一个特定的值来更新 foobar 这两个项目。我试过:

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()

撰写回答