Python
 Computer >> コンピューター >  >> プログラミング >> Python

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を選ぶとよいでしょう。

  1. Pythonの辞書(dict)で特定のキーの値を取得・出力する方法

    Pythonの辞書(dict)は、キーと値のペアを格納するコレクションです。特定のキーに関連付けられた値を取得したい場合は、get()メソッドを使うのが便利です。get()メソッドを使って値を取得するget()メソッドにキーを渡すと、そのキーに対応する値が返されます。>>> D1 = {a: 11, b: 22, c: 33} >>> D1.get(b) 22角括弧([])を使って値を取得するまた、リストと同じように、角括弧の中にキーを指定することでも値を取得できます。>>> D1[c] 33get()メソッドと角括弧の違い両者の大きな違い

  2. 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]) 実行