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

【Python】値の合計がKより大きい辞書だけを抽出する方法

辞書のリストの中から「各キーの値の合計がKより大きい」辞書だけを取り出したい場面はよくあります。このような場合、単純な反復処理(ループ)とif文を組み合わせることで、簡単に実現できます。

本記事では、基本的な実装例に加えて、Pythonの組み込み関数 sum() を活用したより簡潔な書き方についても解説します。

基本の実装例

以下は、値の合計がKより大きい辞書を抽出するサンプルコードです。

my_list = [{"Python" : 14, "is" : 18, "fun" : 19},{"Python" : 12, "is": 4, "fun" : 16},
{"Python" : 13, "is": 17, "fun" : 11},{"Python" : 13, "is": 16, "fun" : 13}]

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

K = 35
print("The value for K :")
print(K)

my_result = []
for index in my_list:
    total = 0
    for key in index:
        total += index[key]
    if total > K:
        my_result.append(index)

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

出力結果

The list :
[{'Python': 14, 'is': 18, 'fun': 19}, {'Python': 12, 'is': 4, 'fun': 16}, {'Python': 13, 'is': 17, 'fun': 11}, {'Python': 13, 'is': 16, 'fun': 13}]
The value for K :
35
The result is :
[{'Python': 14, 'is': 18, 'fun': 19}, {'Python': 13, 'is': 17, 'fun': 11}, {'Python': 13, 'is': 16, 'fun': 13}]

コードの解説

  • まず、複数の辞書を含むリストを定義し、コンソールに表示します。
  • しきい値となる変数 K を定義し、こちらもコンソールに出力します。
  • 抽出結果を格納するための空のリストを作成します。
  • リストを1つずつ反復処理し、各辞書ごとに合計値を0で初期化します。
  • 内側のループで各キーの値を順番に合計へ加算していきます。
  • 合計値が K より大きい場合、その辞書を結果用のリストに追加(append)します。
  • 最後に、条件を満たした辞書のみを含むリストを出力として表示します。

sum()関数を使った簡潔な書き方

上記のコードでは手動で合計を計算していますが、組み込み関数 sum()values() メソッド、さらにリスト内包表記を組み合わせると、より短くスマートに書けます。

my_result = [d for d in my_list if sum(d.values()) > K]
print("The result is :")
print(my_result)

この一行で、元のコードとまったく同じ結果が得られます。

注意点

元のサンプルコードでは変数名として sum を使用していますが、これは組み込み関数 sum() を上書きしてしまうため避けるのが無難です。本記事の例では total という変数名に変更しています。

まとめ

辞書のリストから値の合計が特定の閾値を超えるものを抽出するには、「ループ+if文」による基本形でも十分ですが、sum(d.values()) を使えばコードを大幅に簡潔化できます。用途や可読性のバランスに応じて使い分けましょう。

  1. 【Python入門】リスト内でKより大きい数値のインデックスを取得する方法

    このチュートリアルでは、Pythonを使って、リスト内の指定した数値 K より大きい要素のインデックス(位置)を求める方法を解説します。初心者にもわかりやすいように、代表的な2つのアプローチを順番に見ていきましょう。 方法1:forループとrange()を使う方法 最も基本的な解決方法は、ループ処理を使うことです。処理の手順は以下の通りです。 リストと基準値 K を初期化する リストの長さをもとに、range() でインデックスを順に走査する 要素が K より大きい場合、そのインデックスを出力する サンプルコード # リストとKを初期化 numbers = [3, 4, 5, 23, 12

  2. Pythonで辞書の値を合計する方法をわかりやすく解説

    Pythonの辞書(dict)に格納された値の合計を求めるのは非常に簡単です。最も基本的な方法は、dict.values()メソッドで辞書のすべての値を取得し、組み込み関数のsum()に渡すだけです。基本の方法:dict.values() と sum() を使うまずは最もシンプルな例を見てみましょう。次のコードでは、3つのキーと値を持つ辞書の値をすべて合計しています。d = { foo: 10, bar: 20, baz: 30 } print(sum(d.values()))実行結果このコードを実行すると、以下の出力が得られます。60別の方法:forループで合計するs