【Python入門】辞書のリストを値でソートする方法(lambda・itemgetter)
この記事では、Pythonで辞書のリストを特定の値(キー)を基準に並べ替える方法を解説します。Pythonには標準で用意されている sorted 関数があり、これを使うことで辞書のリストを簡単にソートできます。
辞書のリストをソートする基本の手順
値を基準に辞書をソートするには、以下の手順に従います。
- 辞書を含むリストと、ソートの基準となるキーを
sorted関数に渡す- キーの指定方法は主に2通りあります
- ①
lambda式を使う方法 - ②
itemgetterメソッドを使う方法
それでは、それぞれの方法を具体的なコード例とともに見ていきましょう。
方法1:lambda式を使ってソートする
まずは、lambda 式を使って「salary(給与)」の値を基準に辞書のリストを昇順にソートする例です。
## 辞書のリスト
dicts = [
{"name" : "John", "salary" : 10000},
{"name" : "Emma", "salary" : 30000},
{"name" : "Harry", "salary" : 15000},
{"name" : "Aslan", "salary" : 10000}
]
## lambda式を使って 'salary' の値でソート
## 'reverse=True' を指定すると降順に並べ替えられる
print(sorted(dicts, key = lambda item: item['salary']))
このプログラムを実行すると、次のような結果が出力されます。
[{'name': 'John', 'salary': 10000}, {'name': 'Aslan', 'salary': 10000}, {'name': 'Harry', 'salary': 15000}, {'name': 'Emma', 'salary': 30000}]
給与が低い順(昇順)に並べ替えられていることがわかります。なお、sorted 関数に reverse=True を指定すれば、降順(大きい順)に並べ替えることも可能です。
## 降順でソートしたい場合 print(sorted(dicts, key = lambda item: item['salary'], reverse=True))
方法2:itemgetterメソッドを使ってソートする
次に、operator モジュールからインポートできる itemgetter を使う方法です。基本的な流れはlambda式の場合と同じですが、キーを指定する部分が itemgetter('salary') に変わる点だけが違いです。コードがやや簡潔になり、可読性も向上します。
## operatorモジュールからitemgetterをインポート
from operator import itemgetter
## 辞書のリスト
dicts = [
{"name" : "John", "salary" : 10000},
{"name" : "Emma", "salary" : 30000},
{"name" : "Harry", "salary" : 15000},
{"name" : "Aslan", "salary" : 10000}
]
## itemgetterを使って 'salary' の値でソート
print(sorted(dicts, key = itemgetter('salary')))
実行結果
[{'name': 'John', 'salary': 10000}, {'name': 'Aslan', 'salary': 10000}, {'name': 'Harry', 'salary': 15000}, {'name': 'Emma', 'salary': 30000}]
lambda式を使った場合とまったく同じ結果が得られました。
まとめ
Pythonで辞書のリストを値でソートするには、sorted 関数の key 引数に基準となるキーを指定します。キーの指定には lambda 式と itemgetter の2つの方法があります。
- lambda式: 追加のインポートが不要で、柔軟な条件指定が可能
- itemgetter: コードが簡潔になり、複数キーでのソートにも対応しやすい
どちらの方法でも結果は同じなので、用途や好みに合わせて使い分けるとよいでしょう。
-
Pythonで辞書の値をキーにして辞書のリストを並べ替える方法
sorted()関数を使った辞書リストのソートPythonには、イテラブル(反復可能オブジェクト)の要素を指定した順序で並べ替えるための組み込み関数 sorted() が用意されています。sorted(iterable[, key][, reverse])第2引数の key には関数を指定します。この関数の戻り値が、ソート時の比較キーとして使用されます。第3引数の reverse はデフォルトで False になっており、True を指定すると降順(大きい順)に並べ替えられます。lambda式でソートキーを指定する辞書のリストを並べ替える場合は、lambda式を使って「各辞書の特定のキーの値」
-
Pythonのループでリストに値を追加・代入する方法【append()活用】
Pythonのループを使ってリストに値を追加する方法 Pythonの組み込みクラスであるlistには、要素を末尾に追加するためのappend()メソッドが用意されています。このメソッドとinput()関数、さらに無限ループ(while True)を組み合わせることで、ユーザーが入力した値を次々とリストに格納することができます。 以下のサンプルコードでは、ユーザーが何も入力せずにEnterキーを押すまで、繰り返し項目の入力を受け付け、その都度リストへ追加していきます。 L = [] while True: item = input(新しい項目を入力してください: ) if ite