Python – 辞書のリストで特定のキーの各値の出現回数を調べる方法
Pythonで辞書のリストを扱う際、「特定のキーに含まれる各値が何回出現するか」を調べたいケースがあります。このような場合、itertoolsモジュールのgroupbyメソッドと、リスト内包表記・lambda式を組み合わせることで、簡潔に実現できます。
以下に具体的な実装例を示します。
サンプルコード
from itertools import groupby
my_dict = [{'pyt' : 13, 'fun' : 44}, {'pyt' : 63, 'best' : 15},
{'pyt' : 24, 'fun' : 34}, {'pyt' : 47, 'best' : 64}]
print("The dictionary is :")
print(my_dict)
my_key = 'pyt'
print("The key value is :")
print(my_key)
my_result = [{keys: len(list(value))} for keys, value in groupby(my_dict, lambda index: index[my_key])]
print("The result is :")
print(my_result)
実行結果
The dictionary is :
[{'pyt': 13, 'fun': 44}, {'pyt': 63, 'best': 15}, {'pyt': 24, 'fun': 34}, {'pyt': 47, 'best': 64}]
The key value is :
pyt
The result is :
[{13: 1}, {63: 1}, {24: 1}, {47: 1}]
コードの解説
まず、必要なパッケージである
itertoolsを環境にインポートします。複数の辞書を要素として持つリストを定義し、コンソールに表示します。
出現回数を調べたい対象のキー(ここでは
'pyt')を定義し、コンソールに表示します。リスト内包表記を使ってリストを反復処理しながら、
groupbyメソッドで「キーの値」と「そのインデックス」をもとに要素をグループ化します。各グループはlist()でリストに変換され、len()によってその長さ、つまり出現回数が求められます。得られた結果は変数
my_resultに代入されます。最後に、その結果がコンソールに出力されます。
この例では各値が1回ずつしか登場しないため、すべての出現回数が1になっています。同じ値が複数回含まれるデータでは、対応するカウントが大きくなります。
補足:collections.Counterを使った別のアプローチ
単純に「キーの各値の出現回数」を数えたいだけであれば、標準ライブラリのcollections.Counterを使うとさらにシンプルに記述できます。
from collections import Counter
my_dict = [{'pyt' : 13, 'fun' : 44}, {'pyt' : 63, 'best' : 15},
{'pyt' : 24, 'fun' : 34}, {'pyt' : 47, 'best' : 64}]
my_key = 'pyt'
counter = Counter(d[my_key] for d in my_dict)
print(counter)
用途に応じて、連続したグループを扱いたい場合はgroupby、全体の出現回数を集計したい場合はCounterを選ぶとよいでしょう。
-
Pythonの辞書(dict)で特定のキーの値を取得・出力する方法
Pythonの辞書(dict)は、キーと値のペアを格納するコレクションです。特定のキーに関連付けられた値を取得したい場合は、get()メソッドを使うのが便利です。get()メソッドを使って値を取得するget()メソッドにキーを渡すと、そのキーに対応する値が返されます。>>> D1 = {a: 11, b: 22, c: 33} >>> D1.get(b) 22角括弧([])を使って値を取得するまた、リストと同じように、角括弧の中にキーを指定することでも値を取得できます。>>> D1[c] 33get()メソッドと角括弧の違い両者の大きな違い
-
Pythonの辞書(dict)から特定のキーの値を取得する方法をわかりやすく解説
Pythonの辞書(dict)から特定のキーに対応する値を取得するには、主に2つの方法があります。1つ目は角括弧 [] 演算子を使う方法、2つ目は get() メソッドを使う方法です。それぞれの使い方と違いを詳しく見ていきましょう。 方法1:角括弧 [] を使って値を取得する 最も基本的な方法は、辞書に対して [] 演算子を使い、引数としてキーを渡すことです。 サンプルコード my_dict = {name: TutorialsPoint, time: 15 years, location: India} print(my_dict[name]) print(my_dict[time]) 実行