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 件のコメント: