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

【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: コードが簡潔になり、複数キーでのソートにも対応しやすい

どちらの方法でも結果は同じなので、用途や好みに合わせて使い分けるとよいでしょう。

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

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

  2. Pythonのループでリストに値を追加・代入する方法【append()活用】

    Pythonのループを使ってリストに値を追加する方法 Pythonの組み込みクラスであるlistには、要素を末尾に追加するためのappend()メソッドが用意されています。このメソッドとinput()関数、さらに無限ループ(while True)を組み合わせることで、ユーザーが入力した値を次々とリストに格納することができます。 以下のサンプルコードでは、ユーザーが何も入力せずにEnterキーを押すまで、繰り返し項目の入力を受け付け、その都度リストへ追加していきます。 L = [] while True: item = input(新しい項目を入力してください: ) if ite