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

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']) のようにタプルを返すことで対応できます。

  1. Pythonで辞書(dict)を値で並べ替える方法【OrderedDictとsorted()活用】

    Pythonで辞書を値順にソートする基本の考え方 Pythonの標準ライブラリには、高性能なコンテナデータ型を提供する collections モジュールが含まれています。その中の OrderedDict は辞書型のサブクラスで、要素が追加された順序を記憶できるのが特徴です。通常の dict もPython 3.7以降は挿入順を保持しますが、明示的に順序を扱いたい場面では OrderedDict が便利です。 OrderedDict をイテレートすると、キーが最初に追加された順序どおりにアイテムが返されます。 OrderedDictの基本的な使い方 >>> from coll

  2. Pythonで辞書をキー順に並べ替える方法【OrderedDictとsorted()の使い方】

    Pythonで辞書(dict)の要素をキーの順序に従って並べ替えたい場面はよくあります。この記事では、標準ライブラリのcollectionsモジュールに含まれるOrderedDictと、組み込み関数sorted()を組み合わせて、辞書をキー順にソートする方法を解説します。 OrderedDictとは Pythonの標準ディストリビューションには、高性能なコンテナデータ型を定義したcollectionsモジュールが含まれています。その中のOrderedDictは、辞書のサブクラスであり、要素が追加された順序を記憶する特徴を持っています。OrderedDictをイテレートすると、キーが最初に追加さ