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 と組み合わせれば、値の降順なども自由に指定できます。