今回は、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}
|
この記事もチェック:Pythonによるバブルソートの昇順、降順の実装方法とコードを解説する
テクニック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}
|
この記事もチェック:NumPyでソート(並び替え)処理をするのに便利なメソッド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