20

Pythonプログラマーは、辞書の値が条件に一致するかどうかをどのようにチェックしますか(0私の場合よりも大きいです)。パフォーマンスへの影響が最小限の最も「pythonic」な方法を探しています。

私の辞書:

pairs = { 'word1':0, 'word2':0, 'word3':2000, 'word4':64, 'word5':0, 'wordn':8 }

これまでのところ、これら2つの(巨大な?)メソッドを使用しました。

1:

options = pairs.values() # extract values
for i in options:
    if i > 0:
        return True
return False

2:

options = sorted(pairs.items(), key=lambda e: e[1], reverse=True) # rank from max to min
if options[0][1] > 0:
    return True
else:
    return False
4

2 に答える 2

32

any [docs]を使用できます:

>>> pairs = { 'word1':0, 'word2':0, 'word3':2000, 'word4':64, 'word5':0, 'wordn':8 }
>>> any(v > 0 for v in pairs.itervalues())
True
>>> any(v > 3000 for v in pairs.itervalues())
False

all [ドキュメント]も参照してください。

>>> all(v > 0 for v in pairs.itervalues())
False
>>> all(v < 3000 for v in pairs.itervalues())
True

Python 2.7 を使用しているため、新しいリストを作成しないため、.itervalues()おそらく少し優れています。.values()

于 2012-09-11T18:58:13.060 に答える