2

我有一本字典d(和一个单独的排序键列表,keys)。我希望循环只处理值所在的条目False- 所以我尝试了以下方法:

for key in keys and not d[key]:
 #do foo

我想我对 python sytax 的理解不是我想象的那样 - 因为分配不应该发生在上面,并且 ai 得到一个实例化错误。

下面的工作当然可以,但我真的很想能够使用上面的代码......可能吗?

for key in keys:
 if d[key]: continue
  #foo time!

谢谢!

4

3 回答 3

5

为此使用基因。

for key in (k for k in keys if not d[k]):
   ....
于 2010-06-18T01:25:05.767 回答
2

如果您的 dict 是相反的(如果应该扫描该值,则为真),您可以使用:

for key in filter(d.get, keys):
    ...
于 2010-06-18T01:34:14.950 回答
2
import itertools as it

for key in it.ifilterfalse(d.get, keys):
   ...

itertools通常提供将功能打包到迭代中的最佳方法(==循环;-)。

于 2010-06-18T03:54:09.543 回答