· Fuga578 · Python基礎  · 7 min read

Pythonの辞書 (dict) で何ができるか — 初心者のための完全入門

Pythonのdictを「キーと値のペア」と暗記する前に、何のために存在するのか / どんな場面で使うのかを実例で理解しましょう。

Pythonのdictを「キーと値のペア」と暗記する前に、何のために存在するのか / どんな場面で使うのかを実例で理解しましょう。

Python を学んでいて、リストの次にぶつかる壁が「辞書 (dict)」。中括弧 {} で囲んでコロン : で区切るあれです。

「キーと値のペア」と教えられても、どんな場面で使うかピンとこない人も多いはず。この記事では、辞書がいつ・なぜ必要になるのか を、コード例と一緒に整理します。

辞書ってなに

辞書は「名前で値を引き出せるデータ構造」。

リストが「順番で値を引き出すもの」(my_list[0], my_list[1]…) なのに対し、辞書は「ラベルで値を引き出すもの」です。

# リスト: 番号で引く
scores_list = [80, 92, 75]
print(scores_list[0])       # 80 (1人目の点数)

# 辞書: ラベルで引く
scores_dict = {"田中": 80, "佐藤": 92, "鈴木": 75}
print(scores_dict["田中"])   # 80

リストは「順番に並んだもの」、辞書は「対応関係のあるもの」を扱うときに使います。

基本の書き方

作成

profile = {
    "name": "サクヤ",
    "age": 17,
    "hobby": "ゲーム",
}
print(profile)
Terminal
{'name': 'サクヤ', 'age': 17, 'hobby': 'ゲーム'}

{ "キー": 値, ... } の形。最後にカンマを残しておくと、後で項目を追加しやすいので便利。

値の取り出し

print(profile["name"])    # サクヤ
print(profile["age"])     # 17

[] の中にキーを入れます。リストとそっくりですが、中身がインデックスではなく「キー」になっただけ。

値の追加・更新

profile["job"] = "メイド"        # 新しいキーを追加
profile["age"] = 18              # 既存のキーを更新
print(profile)
Terminal
{'name': 'サクヤ', 'age': 18, 'hobby': 'ゲーム', 'job': 'メイド'}

存在しないキーに代入すれば追加、存在するキーに代入すれば更新。シンプル。

値の削除

del profile["hobby"]

または pop を使うと「削除しつつ値を取り出す」もできます。

removed = profile.pop("hobby")
print(removed)        # ゲーム

どんな場面で使う?

辞書が活きる典型的な3パターン。

1. 「集計・カウント」したいとき

リストの中で「どの値が何回出現したか」を数える、定番のパターン。

votes = ["りんご", "バナナ", "りんご", "みかん", "りんご", "バナナ"]
count = {}
for v in votes:
    count[v] = count.get(v, 0) + 1
print(count)
Terminal
{'りんご': 3, 'バナナ': 2, 'みかん': 1}

count.get(v, 0) は「v がキーにあれば値を、なければ 0」を返す書き方。これがあるおかげで if キーがある: ... else: ... を書かずに済みます。

2. 「設定」を表現したいとき

ゲームのキャラクター設定、APIへのリクエストパラメータなど、「項目ごとに値を持つもの」は辞書の出番。

player = {
    "name": "勇者",
    "hp": 100,
    "mp": 30,
    "level": 1,
    "weapon": "鉄の剣",
}

# ダメージを受けた
player["hp"] -= 15
print(f"{player['name']} の残りHP: {player['hp']}")
Terminal
勇者 の残りHP: 85

リストで player[0] = "勇者", player[1] = 100 … と書くより、ずっと読みやすい。

3. 「対応表」を作りたいとき

「英語 → 日本語」「商品コード → 商品名」のような、変換を表すのにぴったり。

weather = {
    "sunny": "晴れ",
    "cloudy": "曇り",
    "rainy": "雨",
    "snowy": "雪",
}

today = "rainy"
print(f"今日は {weather[today]} です")
Terminal
今日は 雨 です

if-elif の長いチェーンを書く代わりに、辞書1つで一気にマッピングできる。

知っておくと便利なメソッド

get — キーがなくてもエラーにしない

profile = {"name": "サクヤ"}

# 存在しないキー
print(profile["age"])         # ❌ KeyError
print(profile.get("age"))     # ✅ None
print(profile.get("age", 0))  # ✅ デフォルト値を指定: 0

KeyError を防ぐ定番。入門初期から get を使う癖を付けると楽です。

keys / values / items — 反復処理

profile = {"name": "サクヤ", "age": 17}

for key in profile.keys():
    print(key)             # name, age (キーだけ)

for value in profile.values():
    print(value)           # サクヤ, 17 (値だけ)

for key, value in profile.items():
    print(f"{key}: {value}")   # name: サクヤ, age: 17 (両方)

ループで処理するときは items() を使うことが多いです。

in — キーがあるか確認

profile = {"name": "サクヤ"}
print("name" in profile)    # True
print("age" in profile)     # False

「キーが存在するか」だけをチェックしたいなら in 演算子。

よくあるつまずき

まとめ

  • 辞書は「名前で値を引き出せるデータ構造
  • リストの代わりに使うのではなく、「項目に名前を付けたい」「対応関係を表したい」ときに使う
  • get(キー, デフォルト) で安全にアクセス、.items() でループ
  • キーには変更できないもの (文字列・数値・タプル) しか使えない

辞書を理解できると、Python のコードが一気に読めるようになります。 JSON や設定ファイル、Webリクエストのパラメータなど、ほぼあらゆる場面で出てくるので、最初の入門期にしっかり押さえておきたい型です。

Back to Blog

Related Posts

View All Posts »