Python の dict 型のオブジェクトをキーやバリューでソートしてから取り出す方法についてご紹介します。
シンプルでかんたんなのは sorted() 関数に key オプションを渡す方法です。
公式ドキュメントによると sorted() 関数の宣言部は次のとおりとされています。
sorted(iterable, *, key=None, reverse=False)サンプルとして、次のような辞書 d をソートする場合を見てみましょう。
d = {
'Tokyo': 10,
'Osaka': 3,
'Hokkaido': 12,
}キーでソートするなら次のとおりにします。
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)]lambda のところがこれではわかりづらければ、例えば次のように書いてもよいかと思います。
sorted(d.items(), key=lambda k, v: v)
# => [('Osaka', 3), ('Tokyo', 10), ('Hokkaido', 12)]さらに別解として、 Python 本体に同梱の operator ライブラリの itemgetter() 関数を使えば、同様の処理を次のように書くこともできます。
from operator import itemgetter
sorted(d.items(), key=itemgetter(0))
# => キーでソートした結果参考