Python で dictionary の要素をソートして出力する (sorted)

キーでソートして出力

Python の dictionary の要素をキー順に取り出すには、dict.keys() メソッドで dictionary からキーの一覧を取り出し、それを sorted() 関数で昇順ソートしてループ処理します。 つまり、キーのリストをソートしているだけです。

キー名で昇順ソート
>>> d = {'BBB': 200, 'AAA': 300, 'CCC': 100}
>>> for key in sorted(d.keys()):
...     print(key, d[key])

AAA 300
BBB 200
CCC 100

キー名で降順ソートしたいときは、sorted() 関数に reverse=True パラメーターを指定します。

キー名で降順ソート
>>> d = {'BBB': 200, 'AAA': 300, 'CCC': 100}
>>> for key in sorted(d.keys(), reverse=True):
...     print(key, d[key])

CCC 100
BBB 200
AAA 300

値でソートして出力

sorted() 関数の key パラメーターをうまく使うと、dictionary の「値」によりソートされたキーを列挙できます。 次の例では、値の昇順 (100, 200, 300) でループ処理しています。

値で昇順ソート
>>> d = {'BBB': 200, 'AAA': 300, 'CCC': 100}
>>> for key in sorted(d, key=lambda x:d[x]):
...     print(key, d[key])

CCC 100
BBB 200
AAA 300

降順ソート (300, 200, 100) したいときは、sorted() 関数に reverse=True パラメーターを指定します。

値で昇順ソート
>>> d = {'BBB': 200, 'AAA': 300, 'CCC': 100}
>>> for key in sorted(d, reverse=True, key=lambda x:d[x]):
...     print(key, d[key])

AAA 300
BBB 200
CCC 100

参考