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