9

値が特定の条件を満たす辞書のキーを抽出する必要があります。基本的に、私はこれをより短く、よりpythonyな方法でのみ行いたいと思っています:

keys=[]
for key in dict:
    if dict[key]==True:
        keys.append(key)

これは私の最初のアイデアでしたが、ValueError が発生します。

[key for (key,val) in map if val==True]

今のところこれを思いつきましたが、あまり良くないと感じずにはいられません:

[key for key in map.keys() if map[key]==True]

面倒ではない方法はありますか?おそらく、私が明らかに欠けていることは明らかですか?

ありがとう!

4

3 に答える 3

5

これは、理解よりもはるかに短くてきれいな真の値を持つキーを取得する方法です(ただし、理解が悪いというわけではありません)。

>>> dct = {0:False, 1:True, 2:False, 3:True}
>>> list(filter(dct.get, dct))
[1, 3]
>>>
于 2013-07-11T01:22:46.907 に答える
3

使用するdict.items()

[key for key, val in dct.items() if val]

True真のような値ではなく、値を持つキーのみを取得する場合は、等価チェックを使用できます。

[key for key, val in dct.items() if val==True]

ただし、 PEP8には、ブール値を使用して比較すべきではないことが記載されています。その==ため、絶対に必要な場合を除き、使用しないでください。

また、変数に名前を付けないでくださいdict(mapデモンストレーションのみであっても)。

于 2013-07-11T00:39:22.687 に答える
0

マッピングを反復すると、キーのみが生成されます。map.items()代わりに使用してください。

于 2013-07-11T00:39:12.297 に答える