Pythonで辞書を値でソートする3つの方法|sorted関数やラムダ関数を使う方法を解説

スポンサーリンク

今回は、Pythonで辞書を値でソートする手順を公開します。


スポンサーリンク

Python のテクニック1: sorted() 関数を使って辞書を値順に並べ替える

Pythonの operator.itemgetter() メソッド と共に `sorted() メソッドを使用すると、Pythonで辞書を値順に並べ替えることができます。

Pythonのoperatorモジュールには、データや値を操作するための様々な関数が組み込まれています。

operator.itemgetter(m) メソッドは、入力オブジェクトをイテレート可能なものとみなし、イテレート可能なものからすべての ‘m’ 値を取り出します。

構文は以下の通りです。

operator.itemgetter(value)

Python sorted() メソッドは、dict を昇順/降順にソートします。

構文 Python sorted() メソッド

sorted(iterable, key)
  • iterable: ソートされる要素を表します。
  • key (オプション): 要素のソート順を決定する関数。

例えば、以下の様になります。

from operator import itemgetter
inp_dict = { 'a':3,'ab':2,'abc':1,'abcd':0 }
print("Dictionary: ", inp_dict)
sort_dict= dict(sorted(inp_dict.items(), key=operator.itemgetter(1)))
print("Sorted Dictionary by value: ", sort_dict)

上記の関数では、パラメータ key = operator.itemgetter(1) を設定しています。

なぜなら、ここでは ‘1’ が dict の値を表し、 ‘0’ が dict のキーを表しているからです。

このように、dictを値の昇順でソートしています。

出力です。

Dictionary:  {'a': 3, 'ab': 2, 'abc': 1, 'abcd': 0}
Sorted Dictionary by value:  {'abcd': 0, 'abc': 1, 'ab': 2, 'a': 3}

テクニック2:Pythonのラムダ関数とsorted()メソッドの併用

Pythonのsorted()メソッドは、ラムダ関数と組み合わせることで、Pythonの辞書を値ごとにあらかじめ定義された順序でソートすることができます

Pythonのラムダ関数は、無名関数、すなわち名前のない関数を作成します。

これは、コードの最適化に役立ちます。

構文 Pythonラムダ関数

lambda arguments: expression

例えば、以下の様になります。

inp_dict = { 'a':3,'ab':2,'abc':1,'abcd':0 }
print("Dictionary: ", inp_dict)
sort_dict= dict(sorted(inp_dict.items(), key=lambda item: item[1]))
print("Sorted Dictionary by value: ", sort_dict)

上記のコードでは、ラムダ関数を作成し、引数としてdictの値を渡しています。

dictをitem[1]のように値で反復処理することで、dictの値を渡しています。

出力は以下の通りです。

Dictionary:  {'a': 3, 'ab': 2, 'abc': 1, 'abcd': 0}
Sorted Dictionary by value:  {'abcd': 0, 'abc': 1, 'ab': 2, 'a': 3}

テクニック3:Python sorted()メソッドとdict.items()の併用

Python の sorted() 関数は、dict.items() メソッドに値を渡すことで、Python で辞書を値でソートするために使用できます。

dict.items() メソッドは、辞書からキーや値を取得します。

構文は以下の通りです。

dict.items()

例えば、以下の様になります。

inp_dict = { 'a':3,'ab':2,'abc':1,'abcd':0 }
print("Dictionary: ", inp_dict)
sort_dict= dict(sorted((value, key) for (key,value) in inp_dict.items()))
print("Sorted Dictionary by value: ", sort_dict)

上記のコードでは、(value,key) のペアを sorted 関数に渡し、 dict.items() メソッドを使って dict の値を取得しています。

この場合、出力としてソートされた (value,key) のペアを受け取ることになります。

出力です。

Dictionary:  {'a': 3, 'ab': 2, 'abc': 1, 'abcd': 0}
Sorted Dictionary by value:  {0: 'abcd', 1: 'abc', 2: 'ab', 3: 'a'}

まとめ

この記事では、Pythonで辞書を値でソートするさまざまな方法について理解しました。


参考文献

  • Pythonのdictを値でソートする – JournalDev
タイトルとURLをコピーしました