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

Pythonの辞書(dict)を値で並べ替える方法

Pythonの辞書を値でソートする基本

Pythonの標準ライブラリには、高性能なコンテナデータ型を提供する collections モジュールが含まれています。その中の OrderedDict は辞書のサブクラスで、要素が追加された順序を記憶できるのが特徴です。順序付き辞書を反復処理すると、キーが最初に追加された順番どおりに項目が返されます。

>>> from collections import OrderedDict
>>> D = {5:'fff', 3:'ttt', 1:'ooo', 4:'bbb', 2:'ddd'}
>>> OrderedDict(D.items())
OrderedDict([(5, 'fff'), (3, 'ttt'), (1, 'ooo'), (4, 'bbb'), (2, 'ddd')])

続いて、イテラブル内の要素を指定した順序で並べ替える sorted() 関数を使用します。この関数は引数として関数を受け取り、その戻り値がソート時の比較キーになります。辞書を「値」でソートしたい場合は、items() が返すキーと値のタプルのうち、2番目の要素(値)をキーとして指定します。

>>> OrderedDict(sorted(D.items(), key=lambda t: t[1]))
OrderedDict([(4, 'bbb'), (2, 'ddd'), (5, 'fff'), (1, 'ooo'), (3, 'ttt')])

作成した OrderedDict オブジェクトは、必要に応じて通常の辞書オブジェクトへ変換できます。

>>> D1 = dict(OrderedDict(sorted(D.items(), key=lambda t: t[1])))
>>> D1
{4: 'bbb', 2: 'ddd', 5: 'fff', 1: 'ooo', 3: 'ttt'}

補足:Python 3.7以降ならよりシンプルに書ける

Python 3.7以降では、通常の辞書も挿入順序を保持する仕様になったため、OrderedDict を介さずに sorted() の結果を直接 dict() に渡すだけで、値順に並べ替えられた辞書を作成できます。

>>> dict(sorted(D.items(), key=lambda t: t[1]))
{4: 'bbb', 2: 'ddd', 5: 'fff', 1: 'ooo', 3: 'ttt'}

また、降順(値の大きい順)で並べ替えたい場合は、reverse=True を指定します。

>>> dict(sorted(D.items(), key=lambda t: t[1], reverse=True))
{3: 'ttt', 1: 'ooo', 5: 'fff', 2: 'ddd', 4: 'bbb'}
  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をイテレートすると、キーが最初に追加さ