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

Pythonで辞書のキーごとの平均値(累積平均)を求める方法

概要

複数の辞書に含まれる同じキーの値に対して、累積平均(平均値)を求めたいケースはよくあります。このような場合、まず結果を格納するための空の辞書を作成し、元の辞書のリストを順番に走査しながら各項目(キーと値)へアクセスします。キーがすでに結果用の辞書に存在する場合は、その値をリストに追加していき、存在しない場合は新しいキーとして値をリスト形式で格納します。最後に、statisticsモジュールのmean()関数を使って、各キーごとの平均値を計算します。

サンプルコード

以下に具体的な実装例を示します。

from statistics import mean

my_list = [{'hi' : 24, 'there' : 81, 'how' : 11},
   {'hi' : 16, 'how' : 78, 'doing' : 63}]

print("The list is : ")
print(my_list)

my_result = dict()
for sub in my_list:
   for key, val in sub.items():
      if key in my_result:

         my_result[key].append(val)
      else:
         my_result[key] = [val]

for key, my_val in my_result.items():
   my_result[key] = mean(my_val)

print("The result is : ")
print(my_result)

出力結果

The list is :
[{'hi': 24, 'there': 81, 'how': 11}, {'hi': 16, 'how': 78, 'doing': 63}]
The result is :
{'hi': 20, 'there': 81, 'how': 44.5, 'doing': 63}

コードの解説

  • 必要なパッケージ(statisticsモジュール)をインポートします。

  • 辞書を要素とするリストを定義し、コンソールに表示します。

  • 結果を格納するための空の辞書を定義します。

  • 元の辞書リストを反復処理し、各項目(キーと値)を取得します。

  • キーがすでに結果辞書に存在する場合は、その値を対応するリストに追加します。

  • 存在しない場合は、新しいキーとして値をリスト形式で格納します。

  • 再度キーと値を反復処理し、mean()メソッドを使ってそれぞれの平均値を計算します。

  • 最終的な結果をコンソールに表示します。

defaultdictを使ったより簡潔な方法

collectionsモジュールのdefaultdictを利用すると、キーの存在チェックを省略でき、コードをさらに簡潔にできます。

from statistics import mean
from collections import defaultdict

my_list = [{'hi' : 24, 'there' : 81, 'how' : 11},
   {'hi' : 16, 'how' : 78, 'doing' : 63}]

my_result = defaultdict(list)
for sub in my_list:
   for key, val in sub.items():
      my_result[key].append(val)

my_result = {key: mean(vals) for key, vals in my_result.items()}

print("The result is : ")
print(my_result)

この方法では、存在しないキーにアクセスした際に自動的に空のリストが生成されるため、条件分岐が不要になります。また、辞書内包表記と組み合わせることで、平均値への変換も1行で記述できます。データ量が多い場合や可読性を重視したい場合には、こちらのアプローチがおすすめです。

  1. Pythonで辞書(dict)を定義する基本と使い方をわかりやすく解説

    Pythonの辞書(dictionary)オブジェクトは、キーと値のペアを要素とするコレクションです。各ペアはカンマ(,)で区切り、全体を波括弧({})で囲んで定義します。キーと値の対応関係は、コロン(:)で表します。辞書の基本的な定義方法最もシンプルな辞書の定義例は以下の通りです。文字列をキーに、数値を値として格納しています。>>> D1={a:1,b:2,c:3}キーと値のルール辞書において、同じキーは1つの辞書内に一度しか出現できません。一方、値は複数のキーに対して同じものを割り当てることが可能です。また、キーにはイミュータブル(変更不可)なデータ型、つまり数値・文字列

  2. Pythonの辞書からキーを削除する方法を解説!del文・pop()・popitem()の使い分け

    はじめに Pythonの辞書(dict)は、キーと値のペアでデータを管理できる非常に便利なデータ構造です。プログラムの実行中に不要になった要素を削除したい場面は多くありますが、Pythonにはいくつかの削除方法が用意されています。 この記事では、代表的な削除方法であるdel文とpop()メソッドを中心に、それぞれの特徴や使い分けのポイントを実行例とともにわかりやすく解説します。 del文でキーを削除する Pythonのdelキーワードは、ほぼすべてのオブジェクトに対して使用できます。辞書から特定の要素を削除する場合は、delステートメントにキーを指定します。 >>> D1