プログラミングを勉強していると、「辞書」や「連想配列」という言葉が登場します。
「辞書とは何だろう?」「リストと何が違うの?」「キーと値とは何?」と疑問に思っている人も多いのではないでしょうか。
辞書・連想配列とは、名前などのキーと、それに対応する値を組み合わせてデータを管理する仕組みです。
例えば、生徒の名前・年齢・テストの点数をまとめて管理するときに便利です。
この記事では、高校の情報Ⅰを学習する人やプログラミング初心者に向けて、Pythonの辞書の基本から、データの取得・追加・変更・削除、繰り返し処理との組み合わせまで、サンプルコードを使って解説します。
- 1. 辞書・連想配列とは?
- 辞書のイメージ
- 2. 辞書と連想配列の違い
- 3. Pythonで辞書を作る方法
- 4. 辞書からデータを取り出す方法
- 5. 辞書とリストの違い
- 6. 辞書にデータを追加・変更する方法
- 7. 辞書からデータを削除する方法
- 8. get()を使って安全にデータを取得する
- 9. for文で辞書のデータを繰り返し処理する
- 辞書でよく使う3つの繰り返し処理
- 10. リストと辞書を組み合わせる
- 11. 辞書の中に辞書を入れる
- 12. 辞書は実際のシステムでどのように使われる?
- 13. 辞書でよくある間違い
- 14. 練習問題
- 問題1:辞書から値を取り出す
- 問題2:辞書にデータを追加する
- 問題3:合格者だけを表示する
- 15. まとめ
1. 辞書・連想配列とは?
辞書とは、キー(key)と値(value)を組み合わせてデータを管理する仕組みです。
身近な例として、国語辞典を考えてみましょう。「単語」を探すと、その単語に対応する「意味」が見つかります。
プログラミングの辞書も、これと似た仕組みです。
例えば、次のような生徒のデータがあるとします。
辞書のイメージ
キー(key)
値(value)
name
山田太郎
age
16
score
85
それぞれのキーに、対応する値が登録されています。
このデータをPythonの辞書で表現すると、次のようになります。
student = { "name": "山田太郎", "age": 16, "score": 85}
name、age、score がキーで、それぞれに対応する名前・年齢・点数が値です。
Pythonでは、このようなデータ構造を dict(dictionary)と呼びます。
2. 辞書と連想配列の違い
辞書と連想配列は、どちらもキーと値を組み合わせてデータを管理する仕組みを指す言葉です。
Pythonでは「辞書(dict)」、PHPなどでは「連想配列」という名称がよく使われます。
ただし、プログラミング言語によって、キーとして使えるデータの種類や内部の仕組みなどが異なります。
Pythonでは通常、文字列や整数、タプルなどの変更できないデータをキーに使用します。リストなどの変更可能なデータは、そのままではキーにできません。
3. Pythonで辞書を作る方法
Pythonでは、波かっこ {} を使って辞書を作ります。
基本的な書き方は次のとおりです。
変数名 = { "キー1": 値1, "キー2": 値2}
例えば、商品の情報を保存してみましょう。
product = { "name": "ノート", "price": 150, "stock": 20}
この辞書には、商品名・価格・在庫数が保存されています。
辞書では文字列、数値、真偽値、リストなど、さまざまな種類のデータを値として使用できます。
4. 辞書からデータを取り出す方法
辞書のデータを取得するには、キーを指定します。
例えば、先ほどの商品情報から商品名を取り出してみましょう。
product = { "name": "ノート", "price": 150, "stock": 20}print(product["name"])
実行結果:
ノート
価格を取得したい場合は、次のように書きます。
print(product["price"])
実行結果:
150
このように、辞書ではインデックスの番号ではなく、キーを指定して対応する値を取り出します。
5. 辞書とリストの違い
以前学習したリストと辞書を比較してみましょう。
リストは、データを順番に並べて管理します。
student = ["山田太郎", 16, 85]print(student[0])
一方、辞書は名前付きのキーを使ってデータを管理します。
student = { "name": "山田太郎", "age": 16, "score": 85}print(student["name"])
両方とも「山田太郎」と表示されますが、データを取り出す方法が異なります。
| 項目 | リスト | 辞書 |
|---|---|---|
| データの管理 | 順番に並べる | キーと値を対応させる |
| 取り出し方 | data[0] | data["name"] |
| 作成方法 | [10, 20, 30] | {"a": 10, "b": 20} |
| 主な用途 | 点数一覧、商品一覧 | 生徒情報、商品詳細 |
リストは同じ種類のデータを順番に扱いたい場合、辞書は1件のデータを項目名ごとに整理したい場合に便利です。
6. 辞書にデータを追加・変更する方法
辞書は、一度作成したあとでもデータを追加したり変更したりできます。
例えば、商品の辞書にカテゴリーを追加してみましょう。
product = { "name": "ノート", "price": 150}product["category"] = "文房具"print(product)
実行結果:
{'name': 'ノート', 'price': 150, 'category': '文房具'}
存在しないキーを指定して値を代入すると、新しいデータが追加されます。
既存のキーを指定した場合は、その値が更新されます。
product["price"] = 200print(product["price"])
実行結果:
200
このように、辞書はデータの追加や変更が簡単にできます。
7. 辞書からデータを削除する方法
辞書から不要なデータを削除するときは、del を使用します。
例えば、商品情報から在庫数を削除してみましょう。
product = { "name": "ノート", "price": 150, "stock": 20}del product["stock"]print(product)
実行結果:
{'name': 'ノート', 'price': 150}
指定したキーと、それに対応する値が削除されます。
また、pop() を使えば、削除した値を受け取ることもできます。
price = product.pop("price")print(price)
実行結果:
150
8. get()を使って安全にデータを取得する
辞書に存在しないキーを指定すると、KeyError というエラーが発生します。
student = { "name": "山田太郎", "age": 16}print(student["score"])
この辞書には score がないため、エラーになります。
そこで便利なのが、get() メソッドです。
print(student.get("score"))
実行結果:
None
存在しないキーを指定しても、通常はエラーにならず、None が返されます。
さらに、初期値を指定することもできます。
print(student.get("score", 0))
実行結果:
0
辞書から取得するデータが存在するか分からない場合は、get() を活用すると便利です。
9. for文で辞書のデータを繰り返し処理する
これまで学習してきた繰り返し処理は、辞書にも使用できます。
例えば、次のように記述します。
student = { "name": "山田太郎", "age": 16, "score": 85}for key in student: print(key)
実行結果:
name
age
score
辞書に対してfor文を使うと、キーを順番に取得できます。
values()で値を取り出す
値だけを取得したい場合は、values() を使います。
for value in student.values(): print(value)
実行結果:
山田太郎
16
85
items()でキーと値を同時に取得する
キーと値を両方取得したい場合は、items() を使います。
for key, value in student.items(): print(key, value)
実行結果:
name 山田太郎
age 16
score 85
辞書でよく使う3つの繰り返し処理
| 書き方 | 取得する内容 |
|---|---|
for key in data: | キー |
for value in data.values(): | 値 |
for key, value in data.items(): | キーと値 |
10. リストと辞書を組み合わせる
実際のプログラミングでは、リストと辞書を組み合わせることがよくあります。
例えば、3人の生徒の情報をまとめて管理する場合を考えてみましょう。
students = [ {"name": "山田", "score": 85}, {"name": "佐藤", "score": 72}, {"name": "鈴木", "score": 90}]
このプログラムでは、リストの中に3つの辞書が入っています。
for文を使うと、生徒の情報を順番に取得できます。
for student in students: print(student["name"], student["score"])
実行結果:
山田 85
佐藤 72
鈴木 90
条件分岐と組み合わせる
さらに、60点以上の生徒だけを表示してみましょう。
for student in students: if student["score"] >= 60: print(student["name"], "合格")
実行結果:
山田 合格
佐藤 合格
鈴木 合格
このように、リスト・辞書・繰り返し処理・条件分岐を組み合わせれば、複数のデータを条件に応じて処理できます。
11. 辞書の中に辞書を入れる
辞書の値として、別の辞書を保存することもできます。これを入れ子構造、またはネストといいます。
例えば、次のようなデータです。
student = { "name": "山田太郎", "scores": { "math": 85, "english": 92, "science": 78 }}
この場合、scores の中に数学・英語・理科の点数が保存されています。
英語の点数だけを取得したい場合は、次のように書きます。
print(student["scores"]["english"])
実行結果:
92
入れ子の辞書は、WebアプリケーションやJSON形式のデータを扱うときにもよく登場します。
12. 辞書は実際のシステムでどのように使われる?
辞書の考え方は、実際のWebサイトやアプリケーション開発でも役立ちます。
例えば、ネットショップの商品情報を管理する場合です。
product = { "id": 1001, "name": "ノート", "price": 150, "stock": 20, "available": True}
このようなデータを使えば、商品名・価格・在庫数などを項目ごとに取り出せます。
また、APIから取得したJSONデータをPythonで読み込むと、JSONのオブジェクトは通常、辞書に変換されます。
そのため、辞書はWebアプリケーションやデータ処理を学ぶ際にも重要です。
13. 辞書でよくある間違い
初心者が注意したいポイントを確認しましょう。
キーと値を混同する
student = { "name": "山田太郎"}
この場合、name がキーで、山田太郎 が値です。
student["name"] で値を取得できますが、student["山田太郎"] では取得できません。
同じキーを重複して指定する
student = { "name": "山田", "name": "佐藤"}
この場合、同じキーを2回指定しているため、最終的には後から指定した「佐藤」が残ります。
辞書では、キーを重複させないようにしましょう。
キーの大文字と小文字を間違える
student = { "name": "山田太郎"}
student["name"] と student["Name"] は別のキーとして扱われます。
大文字と小文字の違いにも注意が必要です。
14. 練習問題
ここまで学習した内容を使って、3つの問題に挑戦してみましょう。
問題1:辞書から値を取り出す
商品名・価格・在庫数を持つ辞書を作成し、商品名と価格を表示してください。解答を見る
問題2:辞書にデータを追加する
名前と年齢を持つ辞書に、点数(score)として90を追加し、結果を表示してください。解答を見る
問題3:合格者だけを表示する
3人の生徒のリストから、80点以上の生徒の名前だけを表示してください。解答を見る
15. まとめ
辞書・連想配列とは、キーと値を組み合わせてデータを管理する仕組みです。
Pythonでは dict と呼び、波かっこを使って作成します。
student = { "name": "山田太郎", "age": 16}
辞書では、キーを指定したデータの取得、追加、変更、削除ができます。また、for文で繰り返し処理したり、リストと組み合わせて複数のデータを管理したりすることも可能です。
これまで学んだ変数・条件分岐・繰り返し処理・配列・関数・文字列に辞書が加わることで、より実用的なプログラムを作れるようになります。

