2

私は辞書d(およびキーの個別のソート済みリストkeys)を持っています。値が存在するエントリのみをループで処理したかったFalseので、次のことを試しました。

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

私の Python 構文の理解は、私が思っていたものとは違うと思います。

以下はもちろん機能しますが、上記のコードのようなものを使用できるようにしたいのですが..可能ですか?

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
import itertools as it

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

itertools多くの場合、機能を反復 (== ループ;-) に詰め込む最良の方法を提供します。

于 2010-06-18T03:54:09.543 に答える
2

If you dict was opposite (True iff the value should be scanned) you could use:

for key in filter(d.get, keys):
    ...
于 2010-06-18T01:34:14.950 に答える