python for循环中的赋值可能吗?

时间:2010-06-18 01:22:12

标签: python syntactic-sugar

我有一个字典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!

谢谢!

3 个答案:

答案 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通常提供将功能打包到迭代中的最佳方法(==循环; - )。