Python で辞書のリストを並べ替える

Manav Narula 2023年6月21日
  1. sorted() 関数を使用して、Python で辞書のリストを並べ替えます
  2. sort() 関数を使用して、Python で辞書のリストを並べ替えます
Python で辞書のリストを並べ替える

リストは Python の線形コレクション オブジェクトであり、すべての要素を特定のインデックスに格納することで配列をエミュレートできます。 リストには、キーと値のペアを含む辞書など、他のオブジェクトも格納できます。

このチュートリアルでは、Python で辞書のリストを並べ替える方法を示します。

sorted() 関数を使用して、Python で辞書のリストを並べ替えます

この関数は、既存のリストを受け取り、ソートされたリストを返します。 リストを昇順または降順でソートできます。 要素の順序を決定する関数を提供する key パラメータを指定することもできます。

sorted() 関数を使用して辞書のリストをソートすると、利点が得られます。 ただし、比較演算子を使用してディクショナリ インスタンスを比較するのは簡単ではありません。 key パラメータを使用する必要があります。

key の値に基づいてリストをソートできます。 もう 1つの条件は、その key がリスト内のすべての辞書で共通であることです。

この例を見てみましょう。

lst = [{"n": 1}, {"n": 4}, {"n": 2}]
print(sorted(lst, key=lambda d: d["n"]))

出力:

[{'n': 1}, {'n': 2}, {'n': 4}]

上記の例には、同じキー n を持つ辞書があり、このキーの値に基づいて並べ替えています。 sorted() 関数の key パラメータで lambda 関数を割り当てます。

この 1 行の関数は、この key に関連付けられた値を考慮して並べ替えるようにパラメーターに指示します。 lambda 関数の代わりに operator.itemgetter() 関数を使用することもできます。

この関数を使用して辞書から値を取得し、比較に使用できます。 以下のコードを参照してください。

import operator

lst = [{"n": 1}, {"n": 4}, {"n": 2}]
print(sorted(lst, key=operator.itemgetter("n")))

出力:

[{'n': 1}, {'n': 2}, {'n': 4}]

reverse パラメータを使用して True に設定し、リストを降順でソートすることもできます。 たとえば、次のコード フェンスを参照してください。

import operator

lst = [{"n": 1}, {"n": 4}, {"n": 2}]
print(sorted(lst, key=operator.itemgetter("n"), reverse=True))

出力:

[{'n': 4}, {'n': 2}, {'n': 1}]

上記の例は、リストが降順でソートされていることを示しています。

sort() 関数を使用して、Python で辞書のリストを並べ替えます

sort() 関数は、リストを並べ替える sorted メソッドと同様に機能します。 主な違いは、sort() 関数が元のリストの順序を変更し、後者が新しいリストを作成することです。

operator.itemgetter() および lambda 関数を使用して、sorted 関数を使用したのと同じ方法で sort() メソッドを使用できます。

前の例で行ったように、key パラメータを使用します。 reverse パラメータを使用して、リストを降順にソートすることもできます。

以下のコードを参照してください。

import operator

lst1 = [{"n": 1}, {"n": 4}, {"n": 2}]
lst2 = [{"n": 5}, {"n": 1}, {"n": 3}]
lst1.sort(key=lambda d: d["n"])
lst2.sort(key=operator.itemgetter("n"), reverse=True)
print(lst1, lst2)

出力:

[{'n': 1}, {'n': 2}, {'n': 4}] [{'n': 5}, {'n': 3}, {'n': 1}]

上記の例は、元のリストが変更され、必要な key に従ってソートされたことを示しています。

最初のリストは lambda 関数を使用しています。 2つ目は operator.itemgetter メソッドを使用し、reverse パラメーターを使用してリストを降順に並べ替えます。

したがって、Python で辞書のリストをソートするには 2つの方法があります。 まず、sorted および sort 関数を使用しました。 辞書のリストをソートするには、すべての辞書で共通の key の値を使用します。

この値を返す関数を作成し、両方の関数で key パラメータで指定します。 このための lambda および operator.itemgetter メソッドについて説明しました。

結果を降順で取得するには、reverse パラメータを使用して True に設定します。 ブラボー! Python で辞書のリストをソートする方法を学習しました。

著者: Manav Narula
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn

関連記事 - Python List