概要

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のステップでわかりやすく解説します。自分のペースで一歩ずつ着実に学び、プログラミングの第一歩を踏み出しましょう!
続きを見る