2013/01/22

Python Tips:dict(辞書)型の中身をソートしたい

Python の dict 型のオブジェクトをキーやバリューでソートしてから取り出す方法についてご紹介します。

シンプルでかんたんなのは sorted() 関数に key オプションを渡す方法です。

次のような辞書 d に対して
d = {
    'Tokyo': 10,
    'Osaka': 3,
    'Hokkaido': 12,
}

sorted() 関数にソートのキーを指定するための無名関数を渡します。

キーでソートするなら

sorted(d.items(), key=lambda x: x[0])
# => [('Hokkaido', 12), ('Osaka', 3), ('Tokyo', 10)]

バリューでソートするなら

sorted(d.items(), key=lambda x: x[1])
# => [('Osaka', 3), ('Tokyo', 10), ('Hokkaido', 12)]

となります。

operator ライブラリの itemgetter(0) というメソッドを使えば

from operator import itemgetter
sorted(d.items(), key=itemgetter(0))
# => キーでソートした結果

と書くことも可能です。


参考

Sorting HOW TO — Python公式ドキュメント
HowTo/Sorting - Python Wiki
python - How to sort (list/tuple) of lists/tuples? - Stack Overflow

0 件のコメント: