概要

Pythonにおける「辞書」の概念と実践的な使い方を解説します。インデックス番号で管理するリストとは異なり、辞書が「キー」と「値」のペアでデータをどう管理するのか、その基本構造から丁寧に説明します。辞書の作成、キーを使った安全な値の取り出し方(.get())、要素の追加・更新・削除といった基本操作を網羅。
さらに、.items()メソッドとfor文を組み合わせた繰り返し処理で、辞書内のデータを効率的に扱う方法も紹介します。実用的なプログラミングに不可欠なスキルを習得できます。
-

ゼロから始めるPython学習 STEP20目次
プログラミング未経験者向けPython入門講座。環境構築から変数、if文、for文、関数といった基本までを20のステップでわかりやすく解説します。自分のペースで一歩ずつ着実に学び、プログラミングの第一歩を踏み出しましょう!
続きを見る
目次
はじめに
これまでのステップで、複数のデータをまとめて扱う方法として「リスト」を学びました。リストは、0, 1, 2... というインデックス(通し番号)でデータを管理していました。これは、順番が重要なデータを扱うのに非常に便利です。
しかし、プログラミングでは「番号」ではなく、「名前」や「ID」のような特定の目印でデータを管理したい場面が頻繁に登場します。例えば、個人のプロフィールを管理する場合、「0番目のデータが名前、1番目が年齢...」と覚えるのは大変ですし、直感的ではありません。
そこで登場するのが辞書 (dictionary) です。辞書は、キー (key) と値 (value) をペアにしてデータを格納する、非常に強力なデータ型です。
辞書の基本的な仕組み
辞書は、その名の通り、英和辞典のようなものをイメージすると分かりやすいです。英和辞典では、「apple」という単語(キー)を引くと、「りんご」という意味(値)が出てきますよね。Pythonの辞書も全く同じ仕組みです。
- キー (key): 値を特定するための「見出し」や「ラベル」。
- 値 (value): キーに対応する具体的なデータ。
この「キー」と「値」のペアでデータを管理します。
graph TD
subgraph "辞書 (profile)"
Key1["キー: 'name'"] --> Value1["値: '鈴木'"];
Key2["キー: 'age'"] --> Value2["値: 25"];
Key3["キー: 'city'"] --> Value3["値: '大阪'"];
end辞書の作り方
辞書は波括弧 {} を使って作成します。各要素は キー: 値 の形式で書き、カンマ , で区切ります。
# 個人のプロフィール情報を辞書で作成する
profile = {
'name': '鈴木',
'age': 25,
'city': '大阪'
}
# 辞書全体を表示
print(profile)
# 実行結果
# {'name': '鈴木', 'age': 25, 'city': '大阪'}
- キーには、主に文字列や数値が使われます。
- 値には、文字列、数値、リスト、さらには別の辞書など、どんなデータ型でも入れることができます。
- キーは辞書の中でユニークでなければなりません。同じキーを複数使うことはできず、もし書いた場合は最後に書かれた値で上書きされます。
辞書からの値の取り出し(アクセス)
辞書から値を取り出すには、リストのように角括弧 [] を使いますが、インデックス番号の代わりにキーを指定します。
profile = {'name': '鈴木', 'age': 25, 'city': '大阪'}
# 'name'というキーに対応する値を取り出す
print(profile['name'])
# 'age'というキーに対応する値を取り出す
print(f"年齢は {profile['age']} 歳です。")
# 実行結果
# 鈴木
# 年齢は 25 歳です。
この「キーを使って値に直接アクセスできる」というのが、辞書の最大のメリットです。データの順番を気にする必要がありません。
安全な値の取り出し方: .get() メソッド
もし存在しないキーを指定して値を取り出そうとすると、エラー(KeyError)が発生してプログラムが停止してしまいます。
Python
# profile辞書に 'job' というキーは存在しない # print(profile['job']) # -> KeyErrorが発生!
これを防ぐために、.get() メソッドを使うと安全です。.get() は、キーが存在すれば対応する値を返し、存在しない場合はエラーではなく None という特別な値を返します。
graph TD
A["辞書とキー ('job') を用意"] --> B{"辞書にキーは存在する?"};
B -- Yes --> C["対応する値を取得"];
B -- No --> D["エラーではなく None を返す (getメソッド)"];
# .get() を使って安全に値を取得
job = profile.get('job')
print(job)
# キーが存在しない場合に、返す値を指定することも可能
job_default = profile.get('job', '未設定')
print(job_default)
# 実行結果
# None
# 未設定
辞書への要素の追加と更新
辞書は後から新しいキーと値のペアを追加したり、既存の値を更新したりすることが簡単にできます。
要素の追加
新しいキーを指定して値を代入するだけです。
profile = {'name': '鈴木', 'age': 25}
print(f"追加前: {profile}")
# 'city' という新しいキーで値を追加
profile['city'] = '大阪'
print(f"追加後: {profile}")
# 実行結果
# 追加前: {'name': '鈴木', 'age': 25}
# 追加後: {'name': '鈴木', 'age': 25, 'city': '大阪'}
要素の更新
既に存在するキーを指定して値を代入すると、値が上書きされます。
profile = {'name': '鈴木', 'age': 25}
print(f"更新前: {profile}")
# 'age' という既存のキーの値を更新
profile['age'] = 26
print(f"更新後: {profile}")
# 実行結果
# 更新前: {'name': '鈴木', 'age': 25}
# 更新後: {'name': '鈴木', 'age': 26}
辞書からの要素の削除
del を使うと、指定したキーと値のペアを辞書から削除できます。
profile = {'name': '鈴木', 'age': 26, 'city': '大阪'}
print(f"削除前: {profile}")
# 'city' のペアを削除
del profile['city']
print(f"削除後: {profile}")
# 実行結果
# 削除前: {'name': '鈴木', 'age': 26, 'city': '大阪'}
# 削除後: {'name': '鈴木', 'age': 26}
辞書と繰り返し処理 (for文)
辞書とfor文を組み合わせることで、辞書内のすべてのデータを効率的に処理できます。
1. キーを順番に取り出す
for文で辞書をそのまま使うと、キーが一つずつ取り出されます。
for key in profile:
print(f"キー: {key}, 値: {profile[key]}")
2. 値を順番に取り出す (.values())
.values() メソッドを使うと、全ての値だけを順番に取り出せます。
for value in profile.values():
print(f"値: {value}")
3. キーと値のペアを順番に取り出す (.items())
これが最もよく使われる方法です。.items() メソッドを使うと、キーと値がペアになったもの(タプル)を順番に取り出せます。
graph LR
subgraph "profile.items()"
direction LR
Item1["('name', '鈴木')"]
Item2["('age', 26)"]
end
Item1 --> ForLoop["for key, value in ..."];
Item2 --> ForLoop;
subgraph "ループの各回"
direction TB
ForLoop --> K["変数 key にキーが入る"];
ForLoop --> V["変数 value に値が入る"];
end
Python
for key, value in profile.items():
print(f"キー「{key}」に対応する値は「{value}」です。")
# 実行結果
# キー「name」に対応する値は「鈴木」です。
# キー「age」に対応する値は「26」です。
まとめ
今回は、キーと値のペアでデータを管理する「辞書」について学びました。
- 辞書の基本:
{キー: 値}の形式でデータを格納する。 - アクセスのしやすさ: インデックス番号ではなく、意味のある「キー」で値に直接アクセスできる。
- 柔軟性: 要素の追加、更新、削除が簡単に行える。
for文との連携:.keys(),.values(),.items()を使って、辞書内のデータを効率的に処理できる。
辞書は、設定情報、APIから取得したJSONデータ、データベースのレコードなど、実用的なプログラミングのあらゆる場面で登場する、極めて重要なデータ型です。リストとの違いをしっかり理解し、どちらを使うべきか状況に応じて判断できるようになりましょう。
-

ゼロから始めるPython学習 STEP20目次
プログラミング未経験者向けPython入門講座。環境構築から変数、if文、for文、関数といった基本までを20のステップでわかりやすく解説します。自分のペースで一歩ずつ着実に学び、プログラミングの第一歩を踏み出しましょう!
続きを見る
