この記事では、Python で辞書の要素を並び替える方法を解説します。辞書には sort()
メソッド が存在しないため sorted()
関数 を使って並び替えます。
sorted(iterable, *, key=None, reverse=False)
スポンサーリンク
もくじ
keyでソートして、keyのみ格納されたリストを返す
sorted()
関数 の引数に辞書を指定して実行してみる。
d = {'name': '田中太郎', 'age': 20, 'gender': '男'}
sorted_d = sorted(d)
print(sorted_d)
実行結果
['age', 'gender', 'name']
昇順で並び替えされた key がリストとして返されました。
keyでソートして(key, value)のリストとして返す
sorted()
関数 の引数に辞書の items()
メソッド を指定して実行する。
d = {'name': '田中太郎', 'age': 20, 'gender': '男'}
sorted_d = sorted(d.items())
print(sorted_d)
実行結果
[('age', 20), ('gender', '男'), ('name', '田中太郎')]
辞書ではなく (key, vlaue)
を格納したリストとして返される。
valueでソートして(key, value)のリストとして返す
sorted()
関数 の第一引数に辞書の items()
メソッド を指定し、第二引数でラムダを使ってソートする条件を指定することで value でソートできる。
試しに value を基準に昇順で並び替えてみます。
d = {'four': 4, 'three': 3, 'one': 1}
sorted_d = sorted(d.items(), key=lambda v: v[1])
print(sorted_d)
実行結果
[('one', 1), ('three', 3), ('four', 4)]
返される値は 辞書ではなく (key, value)
を格納したリストです。
応用: リスト内に格納された辞書のソート
リストに格納された辞書もソートすることができます。以下のコードでは scoreキー で並び替えしています。
scores = [
{'name': '朝倉', 'score': 91},
{'name': 'ジョン・スミス', 'score': 63},
{'name': '谷口', 'score': 34},
]
sort_scores = sorted(scores, key=lambda v: v['score'])
print(sort_scores)
実行結果
[{'name': '谷口', 'score': 34}, {'name': 'ジョン・スミス', 'score': 63}, {'name': '朝倉', 'score': 91}]