私は辞書のリスト(略語)を持っています。私は特定のキー(この場合の「id
」)に指定された値で辞書の発生をカウントするにはどうすればよいディクショナリのリストでアイテムの出現を数えるにはどうすればよいですか?
my_list = [{ 'id':1, 'val':123 }, {'id':2, 'val':456 }, {'id':2, 'val':789 }]
?回数を活用する方法は(my_list.count('id' = 1)
?!?)
私は辞書のリスト(略語)を持っています。私は特定のキー(この場合の「id
」)に指定された値で辞書の発生をカウントするにはどうすればよいディクショナリのリストでアイテムの出現を数えるにはどうすればよいですか?
my_list = [{ 'id':1, 'val':123 }, {'id':2, 'val':456 }, {'id':2, 'val':789 }]
?回数を活用する方法は(my_list.count('id' = 1)
?!?)
ありますどの程度
sum(1 for d in my_list if d.get('id') == the_value_you_are_interested_in)
>>> my_list = [{ 'id':1, 'val':123 }, {'id':2, 'val':456 }, {'id':2, 'val':789 }]
>>> sum(1 for d in my_list if d.get('id') == 1)
1
>>> sum(1 for d in my_list if d.get('id') == 2)
2
>>> sum(1 for d in my_list if d.get('id') == 20)
0
注発電ではなく、1秒のリストの使用。これはかなり確立されたテクニックであり、おそらくStackOverflowのいくつかの質問に現れます。
list.count(x)
を利用する方法はありません。この方法では、発生件数がx
であるため、完全な辞書になる可能性があります。 Pythonにはfilter
というメソッドがありますが、理解が非常に好ましいです。
私はレイの答え@好きです。別のクールなトリックはcollections.Counter
を使用することです。
from collections import Counter
c = Counter(item for dct in my_list for item in dct.items())
c
=> Counter({('id', 2): 2, ('val', 123): 1, ('id', 1): 1, ('val', 456): 1, ('val', 789): 1})
c[('id', 2)]
=> 2
c[('id', 1)]
=> 1
c[('id', 20)]
=> 0
このソリューションは、複数のキー/値を数えたい場合に特に適しています。
あなたが唯一の特定のキーを気にする場合は、あなたが行うことができます:
k = 'id'
id_counter = Counter(dct.get(k) for dct in my_list)
id_counter
=> Counter({2: 2, 1: 1})
id_counter[2]
=> 2
私は答えの最後の行にあなたのメッセージを理解していない - Pythonの学習者。 –
私は '和([におけるX 1])'書き込みと 'A'が巨大なリストであり、リストの理解は、理論的1Sの膨大なリストを生成する場合、THENそれらすべてを合計します。しかし、私は '次いで1SはA'が大きい構造を実現することなく、上の反復されている'として合計される(Aはxについて1) '和を書けば。 –
今すぐダウンロード!私にとって非常に有益な情報です。どうもありがとうございます。あなたが言う –