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

【Python】辞書のリストを値の合計値でソートする方法

辞書のリストを、各辞書が持つ「値の合計」を基準にして並べ替えたい場面はよくあります。Pythonでは、sumメソッドを活用した関数を定義し、それをソートのキーとして指定することで、簡単に実現できます。

この記事では、具体的なコード例とともに、その手順をわかりやすく解説します。

サンプルコード

def sum_value(row):
    return sum(list(row.values()))

my_dict = [{21 : 13, 44 : 35, 34 : 56}, {11 : 75, 70 : 19, 39 : 70}, {1 : 155}, {48 : 29, 17 : 53}]

print("元の辞書リスト:")
print(my_dict)

my_dict.sort(key = sum_value)

print("ソート後の結果:")
print(my_dict)

実行結果

元の辞書リスト:
[{34: 56, 44: 35, 21: 13}, {11: 75, 70: 19, 39: 70}, {1: 155}, {48: 29, 17: 53}]
ソート後の結果:
[{48: 29, 17: 53}, {34: 56, 44: 35, 21: 13}, {1: 155}, {11: 75, 70: 19, 39: 70}]

コードの解説

  • sum_value関数の定義: 引数として渡された辞書(row)に対して、.values()メソッドですべての値を取得し、sum()でその合計を計算して返します。

  • データの準備: 整数をキーと値に持つ複数の辞書からなるリストを定義し、コンソールに表示します。

  • ソートの実行: リストのsort()メソッドを呼び出す際、key引数に先ほど定義したsum_value関数を指定します。これにより、各辞書の値の合計が小さい順に並べ替えられます。

  • 結果の出力: ソートされたリストがコンソールに表示されます。

補足ポイント

上記の例では合計値が「82 → 104 → 155 → 164」の順になるため、昇順にソートされています。降順にしたい場合は、my_dict.sort(key = sum_value, reverse = True)のようにreverse引数を指定するだけで対応できます。また、元のリストを変更せずに新しいリストとして取得したい場合は、組み込み関数のsorted()を使うのも有効です。

  1. 要素の長さに基づいてリストをソートするPythonプログラム

    この記事では、ユーザーが入力したリストを、各要素の長さ(文字数)に基づいてソートする方法を解説します。Pythonには標準で用意されている組み込み関数 sorted() を使うことで、シンプルなコードで実現できます。 例 入力::[mona,pp,aaa] それぞれの長さは [4,2,3] したがって、ソート後の並び順は [2,3,4] 出力::[pp,aaa,mona] アルゴリズム ステップ1: リストの要素を入力する。 ステップ2: sorted(A, key=len) 関数を適用する。 サンプルコード # リストをソートする def sortedlist(A): ne

  2. Pythonで辞書の値をキーにして辞書のリストを並べ替える方法

    sorted()関数を使った辞書リストのソートPythonには、イテラブル(反復可能オブジェクト)の要素を指定した順序で並べ替えるための組み込み関数 sorted() が用意されています。sorted(iterable[, key][, reverse])第2引数の key には関数を指定します。この関数の戻り値が、ソート時の比較キーとして使用されます。第3引数の reverse はデフォルトで False になっており、True を指定すると降順(大きい順)に並べ替えられます。lambda式でソートキーを指定する辞書のリストを並べ替える場合は、lambda式を使って「各辞書の特定のキーの値」