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

Pythonでラムダ関数を使って辞書のリストを値でソートする方法

Pythonでは、辞書のリストを特定の値(キー)に基づいて並べ替えたい場合、ラムダ関数を活用するのが便利です。組み込みの sorted() 関数と組み合わせることで、簡潔かつ柔軟にソート処理を実装できます。

以下に、具体的な使用例を示します。

サンプルコード

my_list = [{ "name" : "Will", "age" : 56},
          { "name" : "Rob", "age" : 20 },
          { "name" : "Mark" , "age" : 34 },
          { "name" : "John" , "age" : 24 }]

print("年齢でソートしたリスト:")
print(sorted(my_list, key=lambda i: i['age']))

print("年齢と名前でソートしたリスト:")
print(sorted(my_list, key=lambda i: (i['age'], i['name'])))

print("年齢の降順でソートしたリスト:")
print(sorted(my_list, key=lambda i: i['age'], reverse=True))

実行結果

年齢でソートしたリスト:
[{'name': 'Rob', 'age': 20}, {'name': 'John', 'age': 24}, {'name': 'Mark', 'age': 34}, {'name': 'Will', 'age': 56}]
年齢と名前でソートしたリスト:
[{'name': 'Rob', 'age': 20}, {'name': 'John', 'age': 24}, {'name': 'Mark', 'age': 34}, {'name': 'Will', 'age': 56}]
年齢の降順でソートしたリスト:
[{'name': 'Will', 'age': 56}, {'name': 'Mark', 'age': 34}, {'name': 'John', 'age': 24}, {'name': 'Rob', 'age': 20}]

コードの解説

  • まず、複数の辞書要素を含むリストを定義し、コンソールに表示します。

  • sorted() 関数を使用し、引数 key にラムダ関数を指定することで、各辞書の「age」の値を基準に昇順ソートを行います。

  • ラムダ関数でタプル (i['age'], i['name']) を返すことで、年齢が同じ場合に名前順で並べるといった、複数キーによるソートも可能です。

  • さらに、reverse=True を指定すると、降順でのソートが実現できます。

  • 最後に、それぞれのソート結果をコンソールに出力して確認します。

補足:itemgetter を使った代替方法

標準ライブラリの operator.itemgetter を使うと、ラムダ関数よりもわずかに高速で、可読性の高いコードを書くこともできます。

from operator import itemgetter

print(sorted(my_list, key=itemgetter('age')))

単純なキー指定であれば itemgetter、条件が複雑な場合はラムダ関数、と使い分けるとよいでしょう。

  1. Pythonで単語をアルファベット順に並べ替える方法

    文字列オブジェクトに複数の単語が1つのスペースで区切られて含まれている場合、Pythonでは簡単な手順でアルファベット順に並べ替えることができます。まず文字列クラスの split() メソッドを使うと、スペースで区切られた単語がリストとして返されます。その後、組み込みリストクラスの sort() メソッドを呼び出すことで、このリストをソートできます。基本的な手順以下は、文字列内の単語をアルファベット順に並べ替える具体的な例です。>>> string = Hello how are you? >>> word_list = string.split() >

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

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