記事一覧へ戻る 本の順番で続きを読む

辞書(dict)- キーと値のマッピング

Python3初級 | 2026/02/18 15:36

辞書(dict)

辞書とは

辞書はキーと値のペアを格納するデータ構造です。キーを使って高速に値を取得できます。

# 辞書の作成
user = {
    "name": "太郎",
    "age": 25,
    "city": "東京"
}

# dict() コンストラクタ
config = dict(host="localhost", port=8080, debug=True)

# 空の辞書
empty = {}

基本操作

値の取得

user = {"name": "太郎", "age": 25, "city": "東京"}

# ブラケット記法
print(user["name"])  # 太郎
# print(user["email"])  # KeyError!

# get() メソッド(キーがなくてもエラーにならない)
print(user.get("name"))         # 太郎
print(user.get("email"))        # None
print(user.get("email", "未設定"))  # 未設定(デフォルト値)

追加・更新

user = {"name": "太郎", "age": 25}

# 追加
user["email"] = "taro@example.com"

# 更新
user["age"] = 26

# 複数同時に更新
user.update({"age": 27, "city": "大阪"})

# setdefault(キーがなければ設定、あればそのまま)
user.setdefault("country", "日本")

削除

user = {"name": "太郎", "age": 25, "city": "東京"}

# del文
del user["city"]

# pop(値を取り出して削除)
age = user.pop("age")
print(age)  # 25

# pop(キーがない場合のデフォルト値)
email = user.pop("email", None)

# 全削除
user.clear()

ループ

scores = {"数学": 85, "英語": 72, "国語": 90}

# キーでループ
for subject in scores:
    print(subject)

# 値でループ
for score in scores.values():
    print(score)

# キーと値のペアでループ
for subject, score in scores.items():
    print(f"{subject}: {score}点")

# キーの存在チェック
if "数学" in scores:
    print(f"数学: {scores['数学']}点")

辞書のネスト

students = {
    "太郎": {
        "age": 20,
        "scores": {"数学": 85, "英語": 72}
    },
    "花子": {
        "age": 21,
        "scores": {"数学": 92, "英語": 88}
    }
}

# アクセス
print(students["太郎"]["scores"]["数学"])  # 85

辞書内包表記

# 基本
squares = {x: x**2 for x in range(1, 6)}
# {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}

# 条件付き
even_squares = {x: x**2 for x in range(1, 11) if x % 2 == 0}
# {2: 4, 4: 16, 6: 36, 8: 64, 10: 100}

# 2つのリストから辞書を作成
keys = ["name", "age", "city"]
values = ["太郎", 25, "東京"]
user = dict(zip(keys, values))
# {"name": "太郎", "age": 25, "city": "東京"}

便利なメソッド

d = {"a": 1, "b": 2, "c": 3}

print(list(d.keys()))    # ['a', 'b', 'c']
print(list(d.values()))  # [1, 2, 3]
print(list(d.items()))   # [('a', 1), ('b', 2), ('c', 3)]
print(len(d))            # 3

# 辞書のマージ(Python 3.9+)
d1 = {"a": 1, "b": 2}
d2 = {"b": 3, "c": 4}
merged = d1 | d2  # {"a": 1, "b": 3, "c": 4}

まとめ

  • 辞書はキーと値のペアを格納する
  • get() を使うとキーが存在しない場合も安全
  • items() でキーと値のペアを同時にループできる
  • 辞書内包表記で簡潔に辞書を作成できる