プログラミング

Step 13: キーと値で管理する「辞書」の使い方

Step 13: キーと値で管理する「辞書」の使い方

概要

フリーランスエンジニア スリーネクスト

Pythonにおける「辞書」の概念と実践的な使い方を解説します。インデックス番号で管理するリストとは異なり、辞書が「キー」と「値」のペアでデータをどう管理するのか、その基本構造から丁寧に説明します。辞書の作成、キーを使った安全な値の取り出し方(.get())、要素の追加・更新・削除といった基本操作を網羅。

さらに、.items()メソッドとfor文を組み合わせた繰り返し処理で、辞書内のデータを効率的に扱う方法も紹介します。実用的なプログラミングに不可欠なスキルを習得できます。

目次
「ゼロから始めるPython学習」各ステップのタイトル案
ゼロから始める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学習」各ステップのタイトル案
ゼロから始めるPython学習 STEP20目次

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

続きを見る

-プログラミング