Python の辞書を値で昇順・降順にするには、sorted と lambda を使います。
pairs = {'A': 5, 'B': 1, 'C': 3} asc = sorted(pairs.items(), key=lambda pair: pair[1]) desc = sorted(pairs.items(), key=lambda pair: pair[1], reverse=True) print(asc) # [('B', 1), ('C', 3), ('A', 5)] print(desc) # [('A', 5), ('C', 3), ('B', 1)]
pair は辞書のキーと値のペア、pair[1] は値を表します。pair[1] を pair[0] にすると、辞書のキーでソートされます。
pairs = {'A': 5, 'B': 1, 'C': 3} asc = sorted(pairs.items(), key=lambda pair: pair[0]) desc = sorted(pairs.items(), key=lambda pair: pair[0], reverse=True) print(asc) # [('A', 5), ('B', 1), ('C', 3)] print(desc) # [('C', 3), ('B', 1), ('A', 5)]
補足:エラー例
sorted の対象を辞書そのものにしてもうまくいかない。
pairs = {'A': 5, 'B': 1, 'C': 3} asc = sorted(pairs, key=lambda pair: pair[1]) # IndexError: string index out of range
この場合、lambda で使われる要素は辞書のキーです。
pairs = {'A': 5, 'B': 1, 'C': 3} desc = sorted(pairs, key=lambda pair: pair, reverse=True) print(desc) # ['C', 'B', 'A']