カテゴリ: Python 更新日: 2025/12/14

Pythonの辞書をソートする方法!キー・値を基準に並び替えるテクニック

Pythonの辞書をソートする方法!キー・値を基準に並び替えるテクニック
Pythonの辞書をソートする方法!キー・値を基準に並び替えるテクニック

先生と生徒の会話形式で理解しよう

生徒

「Pythonで辞書の中身を並び替える方法ってありますか?」

先生

「はい、Pythonではsorted()関数を使って、辞書のキーや値を基準にソート(並び替え)することができますよ。」

生徒

「ソートって難しそう…。どうやって使うんですか?」

先生

「とっても簡単です!まずは基本から、丁寧に解説していきますね。」

1. Pythonの辞書とは?

1. Pythonの辞書とは?
1. Pythonの辞書とは?

Python(パイソン)の辞書は、キー(名前)値(データ)のペアを保存するデータ型です。ノートの見出しと中身のような関係です。たとえば、「りんご=150円」「みかん=100円」といった情報を1つにまとめられます。


fruits = {"りんご": 150, "みかん": 100, "バナナ": 120}

2. ソートとは?辞書を並び替える理由

2. ソートとは?辞書を並び替える理由
2. ソートとは?辞書を並び替える理由

ソート(sort)とは、データを決まった順番で並び替えることです。例えば辞書を、値段の安い順名前のあいうえお順に並べたいときに使います。

辞書そのものは順番を持たないので、sorted()を使ってリストとして並び替えます。

3. キー(名前)でソートする方法

3. キー(名前)でソートする方法
3. キー(名前)でソートする方法

まずは、辞書のキー(例:「りんご」「みかん」など)で並び替える方法を見てみましょう。


fruits = {"りんご": 150, "みかん": 100, "バナナ": 120}
sorted_items = sorted(fruits.items())
print(sorted_items)

[('みかん', 100), ('りんご', 150), ('バナナ', 120)]

sorted()fruits.items()を渡すと、キー(名前)で並び替えができます。結果は、リスト形式で返ってきます。

4. 値(数値)でソートする方法

4. 値(数値)でソートする方法
4. 値(数値)でソートする方法

次に、値(値段)を基準に並び替えてみましょう。このときはlambda(無名関数)を使って、値だけを取り出して比べます。


fruits = {"りんご": 150, "みかん": 100, "バナナ": 120}
sorted_items = sorted(fruits.items(), key=lambda x: x[1])
print(sorted_items)

[('みかん', 100), ('バナナ', 120), ('りんご', 150)]

x[1]とは、キーと値のうち「値」を意味します。これで値段の安い順に並びました!

5. 降順(大きい順)に並び替えるには?

5. 降順(大きい順)に並び替えるには?
5. 降順(大きい順)に並び替えるには?

デフォルトでは昇順(小さい順)に並びますが、reverse=Trueを追加すると、降順(大きい順)にできます。


fruits = {"りんご": 150, "みかん": 100, "バナナ": 120}
sorted_items = sorted(fruits.items(), key=lambda x: x[1], reverse=True)
print(sorted_items)

[('りんご', 150), ('バナナ', 120), ('みかん', 100)]

6. ソート結果を辞書として使いたい場合

6. ソート結果を辞書として使いたい場合
6. ソート結果を辞書として使いたい場合

sorted()で並び替えた結果はリストになりますが、再び辞書に戻したいときはdict()を使います。


fruits = {"りんご": 150, "みかん": 100, "バナナ": 120}
sorted_items = sorted(fruits.items(), key=lambda x: x[1])
sorted_dict = dict(sorted_items)
print(sorted_dict)

{'みかん': 100, 'バナナ': 120, 'りんご': 150}

dict()で元の辞書形式に戻せるので、後で使うときにも便利です。

7. 辞書のキーだけをソートして表示したいとき

7. 辞書のキーだけをソートして表示したいとき
7. 辞書のキーだけをソートして表示したいとき

キーだけを並び替えたい場合は、sorted()fruits.keys()に使います。


fruits = {"りんご": 150, "みかん": 100, "バナナ": 120}
sorted_keys = sorted(fruits.keys())
print(sorted_keys)

['みかん', 'りんご', 'バナナ']

8. 値だけをソートして表示したいとき

8. 値だけをソートして表示したいとき
8. 値だけをソートして表示したいとき

値(値段)だけを並べ替えたいときは、fruits.values()を使います。ただし、辞書の中身は変わりません。


fruits = {"りんご": 150, "みかん": 100, "バナナ": 120}
sorted_values = sorted(fruits.values())
print(sorted_values)

[100, 120, 150]

9. ソート時によくあるエラーと注意点

9. ソート時によくあるエラーと注意点
9. ソート時によくあるエラーと注意点

辞書の値に数字以外(文字列やリストなど)が入っていると、思わぬエラーになることがあります。

例えば、辞書に文字列の値が含まれているときに、x[1]で数値として比較しようとするとエラーになります。

そのため、値の型(たとえばintやstr)を事前に確認しておくと安心です。

10. 応用例:辞書で成績をソートして表示する

10. 応用例:辞書で成績をソートして表示する
10. 応用例:辞書で成績をソートして表示する

応用として、名前と点数の辞書を作り、点数が高い順に並べてみましょう。


scores = {"佐藤": 80, "田中": 95, "鈴木": 70}
sorted_scores = sorted(scores.items(), key=lambda x: x[1], reverse=True)
for name, score in sorted_scores:
    print(f"{name}さんの点数は{score}点です。")

田中さんの点数は95点です。
佐藤さんの点数は80点です。
鈴木さんの点数は70点です。

まとめ

まとめ
まとめ

Pythonの辞書ソートを全体から振り返る

この記事では、Pythonの辞書をソートする方法について、基礎から応用まで順を追って学んできました。Pythonの辞書は、キーと値をセットで管理できる非常に便利なデータ構造ですが、そのままでは「並び替え」を行うことができません。そのため、実際のプログラムでは sorted() 関数を使って、一度リストとして並び替えるという考え方が重要になります。

辞書のソートは、「キーで並び替えたいのか」「値で並び替えたいのか」「昇順か降順か」といった目的をはっきりさせることがポイントです。目的に応じて items()keys()values() を使い分けることで、辞書の中身を思い通りの順番で扱えるようになります。これは、Python初心者が一段階レベルアップするための大切な知識です。

キーと値、それぞれのソートの考え方

キーでソートする場合は、辞書の items() をそのまま sorted() に渡すことで、自然にキー順で並び替えができます。一方、値を基準にしたソートでは、lambda を使って「どの部分を比べるか」を指定する必要があります。ここで登場した x[1] という書き方は、「キーと値のペアのうち、値だけを見る」という意味でした。

最初は少し難しく感じるかもしれませんが、「辞書をいったんキーと値のセットとして扱い、並び替えてから使う」という流れを理解できると、データ処理の幅が一気に広がります。価格順、点数順、名前順など、現実的な並び替えを簡単に表現できるようになります。

サンプルプログラムでソート処理を再確認


# 商品名と在庫数を管理する辞書
stock = {"りんご": 30, "みかん": 10, "バナナ": 20}

# 在庫数が少ない順に並び替える
sorted_stock = sorted(stock.items(), key=lambda x: x[1])

for item, count in sorted_stock:
    print(item, "の在庫は", count, "個です。")

この例では、辞書の値である「在庫数」を基準にソートしています。こうした処理は、在庫管理、成績管理、売上ランキングなど、さまざまな場面で応用できます。Pythonの辞書ソートは、実務や学習の中で非常に使用頻度が高いテクニックです。

初心者が意識したい注意点

辞書の値をソートする際は、値の型が揃っているかどうかに注意が必要です。数値と文字列が混ざっている場合、比較ができずエラーになることがあります。ソート前に、辞書の中身がどのようなデータで構成されているかを確認する習慣をつけると、トラブルを防げます。

また、sorted() の結果はリストになる点も重要です。並び替えた結果を再び辞書として使いたい場合は、dict() に変換する必要があります。この一連の流れを理解しておくと、辞書操作に対する不安がなくなります。

先生と生徒の振り返り会話

生徒「辞書って並び替えできないと思っていましたが、sortedを使えば自由に並べられるんですね。」

先生「そうだよ。辞書はそのままでは順番を持たないけれど、考え方を変えれば問題なく扱えるんだ。」

生徒「キーで並べるか、値で並べるかを意識するのが大事なんですね。」

先生「その通り。目的を決めてソート方法を選ぶのがポイントだよ。」

生徒「成績や値段のランキング表示にも使えそうです。」

先生「うん。辞書のソートを覚えると、Pythonでできることが一気に増えるよ。」

カテゴリの一覧へ
新着記事
New1
Django
Djangoプロジェクトのディレクトリ構造を完全解説!初心者でも迷わないフォルダの見方
New2
Flask
Flask×Flask-SocketIOでチャットアプリを作る流れを初心者向けにやさしく解説
New3
Flask
Flaskアプリの作り方を基礎から学ぼう!初心者が覚えるべき開発の流れとは?
New4
Flask
Flask-WTFでファイルアップロードフォームを完全ガイド!初心者でもわかる画像やPDFのアップロード方法
人気記事
No.1
Java&Spring記事人気No1
Django
Django環境構築の全手順を完全解説!初心者でも迷わないPython・Djangoセットアップガイド
No.2
Java&Spring記事人気No2
Flask
Flask-Loginでユーザー認証を完全ガイド!初心者でもわかるログイン処理の作り方
No.3
Java&Spring記事人気No3
Python
Pythonの文字列を1文字ずつ処理する方法!for文やlist化の活用例
No.4
Java&Spring記事人気No4
Python
PythonでHello Worldを表示するには?初心者向けに最初の1行を実行してみよう
No.5
Java&Spring記事人気No5
Python
Pythonで定数を定義する方法!変更されない変数の書き方と命名ルールを初心者向けに解説
No.6
Java&Spring記事人気No6
Python
Pythonでリストを文字列に変換する方法を完全ガイド!初心者でもわかるjoinの使い方
No.7
Java&Spring記事人気No7
Flask
FlaskアプリをNginx + Gunicornで本番運用する方法!初心者でもわかるデプロイ構成の基本
No.8
Java&Spring記事人気No8
Python
Pythonのmatch文(パターンマッチング)とは?switch文の代替としての使い方をやさしく解説