1. はじめに
Pythonでデータを扱う際に頻繁に登場するのが「辞書(dict)」です。
特に、辞書のキーや値でソートする方法を覚えておくと、実務やデータ処理において非常に便利です。
本記事では、「Python|辞書のキーや値でソートする方法」をテーマに、初学者にもわかりやすく解説していきます。
記事を読み終えるころには、辞書を自在に並び替える力が身につき、データの整理や表示がスムーズになるでしょう。
2. Pythonの辞書とソートの基本
2-1. Pythonの辞書(dict)とは?
辞書はキーと値のペアを格納できるPythonのデータ型で、以下のように定義します。
person = {'name': 'Alice', 'age': 30, 'city': 'Tokyo'}
このように、name
・age
・city
がキー、それぞれの値がバリューです。
2-2. 辞書のソートに使う関数
辞書をソートするには、Pythonのsorted()
関数を使用します。
ただし、辞書型自体は順序を持たないため、ソート結果はリストで得られる点に注意しましょう。
以下はキーでソートする基本例です。
data = {'b': 3, 'a': 2, 'c': 1}
# キーでソート
sorted_keys = sorted(data.items())
print(sorted_keys)
# 出力: [('a', 2), ('b', 3), ('c', 1)]
実行結果:
[('a', 2), ('b', 3), ('c', 1)]
3. よくある使い方・応用例
3-1. 値でソートする方法
値で並び替えたい場合は、key=
引数にラムダ式を使います。
data = {'b': 3, 'a': 2, 'c': 1}
# 値でソート
sorted_by_value = sorted(data.items(), key=lambda x: x[1])
print(sorted_by_value)
# 出力: [('c', 1), ('a', 2), ('b', 3)]
実行結果:
[('c', 1), ('a', 2), ('b', 3)]
3-2. 辞書としてソート結果を保持したい
リストではなく、dict
形式で保持したい場合は、dict()
で再構築します。
# キーで昇順ソートした辞書を作る
sorted_dict_by_key = dict(sorted(data.items()))
print(sorted_dict_by_key)
# 出力: {'a': 2, 'b': 3, 'c': 1}
# 値で昇順ソートした辞書を作る
sorted_dict_by_value = dict(sorted(data.items(), key=lambda x: x[1]))
print(sorted_dict_by_value)
# 出力: {'c': 1, 'a': 2, 'b': 3}
実行結果:
{'a': 2, 'b': 3, 'c': 1}
{'c': 1, 'a': 2, 'b': 3}
3-3. 値で降順に並び替える
# 値で降順にソート
sorted_desc = dict(sorted(data.items(), key=lambda x: x[1], reverse=True))
print(sorted_desc)
# 出力: {'b': 3, 'a': 2, 'c': 1}
実行結果:
{'b': 3, 'a': 2, 'c': 1}
3-4. 実務での活用例:スコアのランキング
scores = {'Tom': 80, 'Jane': 92, 'Bob': 75}
# 得点順に並び替え(高い順)
ranking = dict(sorted(scores.items(), key=lambda x: x[1], reverse=True))
print(ranking)
# 出力: {'Jane': 92, 'Tom': 80, 'Bob': 75}
実行結果:
{'Jane': 92, 'Tom': 80, 'Bob': 75}
このように、ランキングのような実務シーンで非常に役立ちます。
4. 注意点・エラー対策
4-1. 辞書そのものはソートされない
sorted()
は新しいリストや辞書を作る関数です。
元の辞書data
は変更されません。
4-2. items()を忘れるとTypeErrorになる
辞書を直接sorted(data)
とすると、キーだけが対象になり、値でソートできません。
値でソートしたいときは必ずdata.items()
を使いましょう。
# 間違った例(値でソートされない)
sorted(data) # キーだけがソートされる
実行結果:
['a', 'b', 'c']
4-3. 複雑な値の比較に注意
値がリストや辞書などの複雑な型になると、比較ができずエラーになります。
その場合は、比較可能な値に変換してからソートする工夫が必要です。
5. まとめ
- Pythonの辞書はソート対象としては直接扱えないため、
sorted()
とitems()
を組み合わせて並び替える - キーや値によって並び替えられるため、データ分析・可視化・ランキングに便利
- dict形式で再構築することで、ソート結果をそのまま活用可能
この知識を活かせば、日々のプログラミングや実務でもデータを見やすく整理しやすくなります。
Python初心者のうちにマスターしておくと後々とても役立つテクニックです!