今回はPythonの辞書を要素でソートする方法について説明します。様々な方法がありますが、sorted 関数を使うことで簡単にできます。
辞書のkeyのみをソートする
sorted 関数は、引数に辞書を渡すとkeyのみをソートしたリストを返します。
1 2 3 4 |
dic1 = {"banana":200, "apple":150, "orange":100, "melon":300} dic2 = sorted(dic1) print dic2 # ['apple', 'banana', 'melon', 'orange'] |
キーでソートする
items() メソッドは、辞書の(key, value)タプルを要素としたリストを返します。sorted 関数にdic.items() を引数として渡すことで、keyでソートした辞書要素( (key, value) のタプル)のリストを返します。
1 2 3 4 |
dic1 = {"banana":200, "apple":150, "orange":100, "melon":300} dic2 = sorted(dic1.items()) print dic2 # [('apple', 150), ('banana', 200), ('melon', 300), ('orange', 100)] |
値でソートする
valueでソートしたい場合は、次のように無名関数を使います。
1 2 3 4 |
dic1 = {"banana":200, "apple":150, "orange":100, "melon":300} dic2 = sorted(dic1.items(), key=lambda x:x[1]) print dic2 # [('orange', 100), ('apple', 150), ('banana', 200), ('melon', 300)] |
lambda x:x[1] は、引数 x( dic.items()で得られたリストの各要素、すなわち、(key, value) のタプル)を受け取りx[1](value)を返します。ここでは、返り値を key にセットすることで、value をキーにソートしています。
降順でソートする
降順でソートするには、reverse オプションを True に設定します。key で降順にソートする例を示します。
1 2 3 4 |
dic1 = {"banana":200, "apple":150, "orange":100, "melon":300} dic2 = sorted(dic1.items(), reverse=True) print dic2 # [('orange', 100), ('melon', 300), ('banana', 200), ('apple', 150)] |