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

Pythonで辞書のリストからキーごとの最大値を抽出する方法

複数の辞書が格納されたリストから、キーごとに最大値を取り出したいケースはよくあります。このような場合は、シンプルな反復処理(イテレーション)を使うことで効率的に実現できます。本記事では、辞書のリストを走査しながら、同じキーが現れた際に最大値を保持する方法を解説します。

サンプルコード

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

my_list = [{"Python": 8, "is": 1, "fun": 9}, {"Python": 2, "is": 9, "fun": 1}, {"Python": 5, "is": 10, "fun": 7}]

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

result = {}
for dic in my_list:
   for key, value in dic.items():

      if key in result:
         result[key] = max(result[key], value)
      else:
         result[key] = value

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

出力

The list is :
[{'Python': 8, 'is': 1, 'fun': 9}, {'Python': 2, 'is': 9, 'fun': 1}, {'Python': 5, 'is': 10, 'fun': 7}]
The result is :
{'Python': 8, 'is': 10, 'fun': 9}

処理の流れと解説

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

  • 結果を格納するための空の辞書 result を作成します。

  • 外側のループで、リスト内の各辞書を順番に走査します。

  • 内側のループでは、items() メソッドを使って各辞書のキーと値のペアを取り出します。

  • キーがすでに result に存在する場合は、max() 関数で既存の値と新しい値を比較し、大きい方を代入します。

  • キーがまだ存在しない場合は、その値をそのまま result に登録します。

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

より簡潔な書き方:辞書内包表記を活用

同様の処理は、辞書内包表記と set().union() を組み合わせることで、より簡潔に記述することもできます。

result = {key: max(d[key] for d in my_list if key in d) for key in set().union(*my_list)}
print(result)

この方法でも出力は同じく {'Python': 8, 'is': 10, 'fun': 9} となります。可読性を重視するならforループ方式、コード量を抑えたいなら内包表記方式を選ぶとよいでしょう。

  1. 連続する「1」を含まないバイナリ文字列の数を数えるPythonプログラム

    この記事では、「連続する1が存在しないバイナリ文字列の総数を求める」という問題の解き方について、Pythonでの実装例を交えながら詳しく解説します。 問題文 問題: 正の整数 N が与えられます。このとき、長さ N のバイナリ文字列(0と1のみで構成される文字列)のうち、連続する「1」が一切含まれないものの総数を求めてください。 例えば N = 3 の場合、有効な文字列は「000」「001」「010」「100」「101」の5つとなり、「011」「110」「111」は連続する1を含むため除外されます。 アプローチ:動的計画法 この問題は動的計画法(DP)を使うことで効率的に解けます。各桁の状態を

  2. 【Python】約数の個数が偶数か奇数かを判定するプログラムの書き方

    この記事では、ある整数の約数の個数が偶数か奇数かを判定するPythonプログラムについて、その考え方と実装方法をわかりやすく解説します。 問題文 ある数「n」が与えられたとき、その約数の総数が偶数であるか奇数であるかを判定してください。 例えば、n = 10 の場合、約数は 1, 2, 5, 10 の4つなので「偶数」。一方、n = 100 の場合は 1, 2, 4, 5, 10, 20, 25, 50, 100 の9つとなり「奇数」となります。 アプローチ:約数を実際に数える 最も基本的な方法は、すべての約数を見つけ、その個数が偶数か奇数かをチェックすることです。 ここで重要なのは、約数