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、条件が複雑な場合はラムダ関数、と使い分けるとよいでしょう。
-
Pythonで単語をアルファベット順に並べ替える方法
文字列オブジェクトに複数の単語が1つのスペースで区切られて含まれている場合、Pythonでは簡単な手順でアルファベット順に並べ替えることができます。まず文字列クラスの split() メソッドを使うと、スペースで区切られた単語がリストとして返されます。その後、組み込みリストクラスの sort() メソッドを呼び出すことで、このリストをソートできます。基本的な手順以下は、文字列内の単語をアルファベット順に並べ替える具体的な例です。>>> string = Hello how are you? >>> word_list = string.split() >
-
Pythonで辞書の値をキーにして辞書のリストを並べ替える方法
sorted()関数を使った辞書リストのソートPythonには、イテラブル(反復可能オブジェクト)の要素を指定した順序で並べ替えるための組み込み関数 sorted() が用意されています。sorted(iterable[, key][, reverse])第2引数の key には関数を指定します。この関数の戻り値が、ソート時の比較キーとして使用されます。第3引数の reverse はデフォルトで False になっており、True を指定すると降順(大きい順)に並べ替えられます。lambda式でソートキーを指定する辞書のリストを並べ替える場合は、lambda式を使って「各辞書の特定のキーの値」