3

与えられた項目の口述

sample = { 'a':1 , 'b':2 , 'c':3 , 'd':None , 'e':None }

値を持つ項目のみを持つ新しい dict を作成したいと思います。

これは動作します..

a = dict([ i for i in testing.iteritems() if i[1]])

しかし、もっとpythonic/readableなものがあるかどうか疑問に思っています。

私は次のようなことができることを望んでいました

a = dict([ i for i in testing.____() if i.value() ])

しかし、そのように機能する標準イテレータはありません。

読みやすくするために、これに興味があります。

4

3 に答える 3

3

あなたが使用することができますdict comprehension:-

>>> {key: value for key, value in sample.iteritems() if value}
0: {'a': 1, 'b': 2, 'c': 3}

注:Python 3を使用している場合は、単にsample.items()を使用してください。これは、2.7と3が異なる点です。

于 2013-02-01T21:19:27.387 に答える
2

タプルの解凍(各キーと値を個別の変数に割り当て、次の例では)とdictの理解を使用kvます。

a = {k: v for k, v in sample.iteritems() if v}

またはNone、すべての偽の値(数値0、空のシーケンスなど)の代わりに、明示的にテストします。

a = {k: v for k, v in sample.iteritems() if v is not None}

Python 3では、次のものだけを使用する必要がありますitems()

a = {k: v for k, v in sample.items() if v}

サンプルの場合、上記のすべてのバリエーションは次のようになります。

>>> sample = { 'a':1 , 'b':2 , 'c':3 , 'd':None , 'e':None }
>>> {k: v for k, v in sample.iteritems() if v}
{'a': 1, 'c': 3, 'b': 2}
于 2013-02-01T21:18:56.683 に答える
0

パイソン 3:

sample =  {'a': 1, 'e': 0, 'd': None}
k = {k: v for k, v in sample.items() if v is not None}

>>> k
{'a': 1, 'e': 0}
于 2013-02-01T21:22:54.743 に答える