Python中 for 循环中可以赋值吗?
我有一个字典 d
(还有一个单独的排序好的键列表 keys
)。我想让循环只处理那些值为 False
的条目,所以我尝试了下面的代码:
for key in keys and not d[key]:
#do foo
我想我对 Python 语法的理解没有我想的那么好——因为上面的赋值似乎没有按预期发生,我得到了一个实例化错误。
下面的代码当然可以正常工作,但我真的希望能使用上面的那种写法……这可能吗?
for key in keys:
if d[key]: continue
#foo time!
谢谢!
3 个回答
2
如果你的字典是反过来的(也就是说,只有在值需要被扫描的时候才是True),你可以这样使用:
for key in filter(d.get, keys):
...
2
import itertools as it
for key in it.ifilterfalse(d.get, keys):
...
itertools
通常提供了将功能打包到循环中的最佳方法。
5
用一个通用表达式来解决这个问题。
for key in (k for k in keys if not d[k]):
....