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

Pythonで辞書リストの各キーごとの最大値を取得する方法

複数の辞書を含むリストから、キーごとの最大値を取得したいケースは少なくありません。たとえば、複数回の計測データやログの中から項目別の最大値を抽出したい場合などです。こうした処理は、シンプルな反復処理(ループ)と max() 関数を組み合わせることで簡単に実装できます。

サンプルコード

以下に、実際の実装例を示します。

my_list = [{"Hi": 18, "there": 13, "Will": 89},
   {"Hi": 53, "there": 190, "Will": 87}]

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

my_result = {}
for elem in my_list:
   for key, val in elem.items():
      if key in my_result:
         my_result[key] = max(my_result[key], val)
      else:
         my_result[key] = val

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

出力結果

The list is :
[{'Will': 89, 'there': 13, 'Hi': 18}, {'Will': 87, 'there': 190, 'Hi': 53}]
The result is :
{'Will': 89, 'there': 190, 'Hi': 53}

コードの解説

  • まず、複数の辞書を含むリストを定義し、コンソールに表示します。

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

  • 外側のループでリスト内の各辞書にアクセスし、内側のループで各辞書のキーと値を順番に取り出します。

  • キーがすでに結果用の辞書に存在する場合は、既存の値と新しい値を max() 関数で比較し、大きい方を該当キーに上書き保存します。

  • キーがまだ存在しない場合は、その値をそのまま該当キーに格納します。

  • すべての処理が完了した後、最終的な結果がコンソールに出力されます。

より簡潔な書き方:dict.get() を活用する

if文による分岐を避けたい場合は、dict.get() メソッドを使うとコードをより簡潔にできます。get() はキーが存在しない場合にデフォルト値を返すため、キーの有無チェックと初期化の処理を1行にまとめられます。

my_result = {}
for elem in my_list:
   for key, val in elem.items():
      my_result[key] = max(my_result.get(key, val), val)

このように書くことで、ロジックの意図(「既存の値と新しい値のうち大きい方を採用する」)がひと目でわかる、読みやすいコードになります。ネガティブな値が含まれる可能性があるデータでも正しく動作する点もポイントです。

  1. Pythonでタプルのリストを辞書に変換する方法を解説

    Pythonでは、キーと値のペアを持つタプルのリストを、簡単に辞書(dict)へ変換できます。本記事では、setdefault()メソッドやdict()コンストラクタを使った変換方法を、具体例とともにわかりやすく解説します。 変換のイメージ まずは、どのような変換が行われるのかを見てみましょう。タプルのリストの各要素の第1引数が辞書の「キー」に、第2引数が「値」に対応します。 入力: [(Adwaita, 5), (Aadrika, 5), (Babai, 37), (Mona, 7), (Sanj, 25), (Sakya, 30)] 出力: {Adwaita: 5, Aadr

  2. 文中の各単語を逆順に並べ替えるPythonプログラムの書き方

    この記事では、Pythonの組み込み関数を使って、文の中の各単語を逆順にする方法を解説します。処理の流れはシンプルで、まず文を単語のリストに分割し、次に各単語を反転させて新しいリストを作成し(ここではリスト内包表記を活用)、最後にそのリストを結合して新しい文を生成します。 実行例 入力 :: PYTHON PROGRAM 出力 :: NOHTYP MARGORP アルゴリズム ステップ1 : 文を入力し、変数 s に格納する。 ステップ2 : 文を単語のリストに分割する。 w = s.split( ) ステップ3 : 各単語を反転させ、新しい単語リスト nw を作成する。 ステップ