Pythonで辞書のリストを値で並べ替える方法を解説
Pythonで辞書のリストを値に基づいてソートする方法
Pythonでは、辞書(dict)が格納されたリストを、各辞書の特定のキーの値を基準にして並べ替えることができます。最も一般的な方法は、組み込み関数 sorted() を使い、key 引数にラムダ式(lambda)を渡すことです。ラムダ式で「どのキーの値を使ってソートするか」を指定します。
sorted() 関数を使った基本的なソート
以下は、辞書のリストを 'age' キーの値で昇順に並べ替える例です。
A = [{'name':'john','age':45},
{'name':'andi','age':23},
{'name':'john','age':22},
{'name':'paul','age':35},
{'name':'john','age':21}]
new_A = sorted(A, key=lambda x: x['age'])
print(new_A)このコードを実行すると、次のような出力が得られます。
[{'name': 'john', 'age': 21}, {'name': 'john', 'age': 22}, {'name': 'andi', 'age': 23}, {'name': 'paul', 'age': 35}, {'name': 'john', 'age': 45}]sorted() 関数は元のリストを変更せず、ソート済みの新しいリストを返すため、元のデータを保持したい場合に便利です。
sort() メソッドでその場(in-place)でソートする
新しいリストを作成せず、元のリスト自体を直接並べ替えたい場合は、リストの sort() メソッドを使用します。使い方は sorted() とほぼ同じです。
A = [{'name':'john','age':45},
{'name':'andi','age':23},
{'name':'john','age':22},
{'name':'paul','age':35},
{'name':'john','age':21}]
A.sort(key=lambda x: x['age'])
print(A)実行結果は以下のとおりです。
[{'name': 'john', 'age': 21}, {'name': 'john', 'age': 22}, {'name': 'andi', 'age': 23}, {'name': 'paul', 'age': 35}, {'name': 'john', 'age': 45}]sorted() と sort() の違い
- sorted(): 元のリストは変更されず、ソート済みの新しいリストを返します。
- sort(): 元のリスト自体をその場で並べ替えます。戻り値は None です。
降順でソートしたい場合
逆順(降順)に並べ替えたいときは、reverse=True を指定するだけです。
new_A = sorted(A, key=lambda x: x['age'], reverse=True)
このように、key 引数とラムダ式を組み合わせることで、辞書の任意のキーを基準に柔軟にソートできます。複数のキーでソートしたい場合は、key=lambda x: (x['name'], x['age']) のようにタプルを返すことで対応できます。
-
Pythonで辞書(dict)を値で並べ替える方法【OrderedDictとsorted()活用】
Pythonで辞書を値順にソートする基本の考え方 Pythonの標準ライブラリには、高性能なコンテナデータ型を提供する collections モジュールが含まれています。その中の OrderedDict は辞書型のサブクラスで、要素が追加された順序を記憶できるのが特徴です。通常の dict もPython 3.7以降は挿入順を保持しますが、明示的に順序を扱いたい場面では OrderedDict が便利です。 OrderedDict をイテレートすると、キーが最初に追加された順序どおりにアイテムが返されます。 OrderedDictの基本的な使い方 >>> from coll
-
Pythonで辞書をキー順に並べ替える方法【OrderedDictとsorted()の使い方】
Pythonで辞書(dict)の要素をキーの順序に従って並べ替えたい場面はよくあります。この記事では、標準ライブラリのcollectionsモジュールに含まれるOrderedDictと、組み込み関数sorted()を組み合わせて、辞書をキー順にソートする方法を解説します。 OrderedDictとは Pythonの標準ディストリビューションには、高性能なコンテナデータ型を定義したcollectionsモジュールが含まれています。その中のOrderedDictは、辞書のサブクラスであり、要素が追加された順序を記憶する特徴を持っています。OrderedDictをイテレートすると、キーが最初に追加さ