我有一个字典d
(以及一个单独排序的键列表,keys
)。我希望循环只处理值为False
的条目 - 所以我尝试了以下内容:
for key in keys and not d[key]:
#do foo
我想我对python sytax的理解不是我认为的那样 - 因为赋值不会发生在上面,并且我得到了一个实例化错误。
以下是有效的,但我真的希望能够使用上面的代码......可能吗?
for key in keys:
if d[key]: continue
#foo time!
谢谢!
答案 0 :(得分:5)
使用genex。
for key in (k for k in keys if not d[k]):
....
答案 1 :(得分:2)
如果你的dict相反(如果值应扫描,则为True),你可以使用:
for key in filter(d.get, keys):
...
答案 2 :(得分:2)
import itertools as it
for key in it.ifilterfalse(d.get, keys):
...
itertools
通常提供将功能打包到迭代中的最佳方法(==循环; - )。