キーでソートして出力
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
参考
- リストを昇順ソート/降順ソートする (
list.sort
,sorted
) - dictionary の内部的な要素順序を変更する (
dict
,OrderedDictionary
)- Python 3.7 以降は、dictionary への要素の追加順序が内部的に保持されるようになっています。