Pythonで辞書のリストを要素でソートする
今回はPythonの辞書を要素でソートする方法について説明します。様々な方法がありますが、sorted 関数を使うことで簡単にできます。
辞書のkeyのみをソートする
sorted 関数は、引数に辞書を渡すとkeyのみをソートしたリストを返します。
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) のタプル)のリストを返します。
dic1 = {"banana":200, "apple":150, "orange":100, "melon":300} dic2 = sorted(dic1.items()) print dic2 # [('apple', 150), ('banana', 200), ('melon', 300), ('orange', 100)]
値でソートする
valueでソートしたい場合は、次のように無名関数を使います。
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 で降順にソートする例を示します。
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)]