🐍Python

Pythonで辞書を値(value)でソートする方法

辞書はそのままでは並び替えできないので、sorted() で並べてから新しい辞書を作ります。

値(value)で昇順ソート

scores = {"a": 30, "b": 10, "c": 20}
result = dict(sorted(scores.items(), key=lambda x: x[1]))
# {'b': 10, 'c': 20, 'a': 30}

降順にしたいとき

result = dict(sorted(scores.items(), key=lambda x: x[1], reverse=True))
# {'a': 30, 'c': 20, 'b': 10}

キーでソートする場合

result = dict(sorted(scores.items()))  # キーの昇順

x[0] がキー、x[1] が値です。key を変えるだけで並び替え基準を切り替えられます。

よくある質問

ソートした結果はなぜ辞書に戻すの?
sorted はタプルのリストを返すため、dict() で包み直すと辞書として使えます。Python3.7以降は順序が保持されます。
降順にするには?
sorted に reverse=True を渡します。key と組み合わせれば、値の降順なども自由に指定できます。