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)
このように書くことで、ロジックの意図(「既存の値と新しい値のうち大きい方を採用する」)がひと目でわかる、読みやすいコードになります。ネガティブな値が含まれる可能性があるデータでも正しく動作する点もポイントです。
-
Pythonでタプルのリストを辞書に変換する方法を解説
Pythonでは、キーと値のペアを持つタプルのリストを、簡単に辞書(dict)へ変換できます。本記事では、setdefault()メソッドやdict()コンストラクタを使った変換方法を、具体例とともにわかりやすく解説します。 変換のイメージ まずは、どのような変換が行われるのかを見てみましょう。タプルのリストの各要素の第1引数が辞書の「キー」に、第2引数が「値」に対応します。 入力: [(Adwaita, 5), (Aadrika, 5), (Babai, 37), (Mona, 7), (Sanj, 25), (Sakya, 30)] 出力: {Adwaita: 5, Aadr
-
文中の各単語を逆順に並べ替えるPythonプログラムの書き方
この記事では、Pythonの組み込み関数を使って、文の中の各単語を逆順にする方法を解説します。処理の流れはシンプルで、まず文を単語のリストに分割し、次に各単語を反転させて新しいリストを作成し(ここではリスト内包表記を活用)、最後にそのリストを結合して新しい文を生成します。 実行例 入力 :: PYTHON PROGRAM 出力 :: NOHTYP MARGORP アルゴリズム ステップ1 : 文を入力し、変数 s に格納する。 ステップ2 : 文を単語のリストに分割する。 w = s.split( ) ステップ3 : 各単語を反転させ、新しい単語リスト nw を作成する。 ステップ