基礎

Pythonの辞書(dict)|キーと値でデータを管理する

辞書(dict)は、キーと値のペアでデータを管理するデータ構造です。名前で値を素早く検索できるため、設定情報やユーザーデータの管理など、実務で最もよく使われるデータ構造の一つです。

この記事では、辞書の作成方法から、要素の追加・削除・検索、ループ処理、便利なメソッドまで詳しく解説します。

基本的な使い方

辞書は波括弧 {} で作成します。キー: 値 の形でペアを記述します。

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

print(user)
print(f"名前: {user['name']}")
print(f"年齢: {user['age']}")

# 要素数
print(f"要素数: {len(user)}")
実行結果
{'name': '太郎', 'age': 25, 'city': '東京'}
名前: 太郎
年齢: 25
要素数: 3

要素の追加・更新・削除

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

# 追加・更新
user["email"] = "taro@example.com"  # 新しいキー = 追加
user["age"] = 26                     # 既存のキー = 更新
print(user)

# 複数のキーを一度に更新
user.update({"city": "東京", "age": 27})
print(user)

# 削除
del user["email"]           # キーを指定して削除
age = user.pop("age")       # 削除して値を返す
print(f"削除した年齢: {age}")
print(user)
実行結果
{'name': '太郎', 'age': 26, 'email': 'taro@example.com'}
{'name': '太郎', 'age': 27, 'email': 'taro@example.com', 'city': '東京'}
削除した年齢: 27
{'name': '太郎', 'city': '東京'}

安全な値の取得

存在しないキーにアクセスすると KeyError が発生します。get()メソッドを使うと安全に値を取得できます。

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

# get()メソッド:キーがなければデフォルト値を返す
print(user.get("name"))           # 太郎
print(user.get("email"))          # None
print(user.get("email", "未設定"))  # 未設定

# キーの存在チェック
if "name" in user:
    print(f"名前: {user['name']}")

if "email" not in user:
    print("メールアドレスは未登録です")
実行結果
太郎
None
未設定
名前: 太郎
メールアドレスは未登録です

辞書のループ

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

# キーのみ
for subject in scores:
    print(subject, end=" ")
print()

# 値のみ
for score in scores.values():
    print(score, end=" ")
print()

# キーと値のペア
for subject, score in scores.items():
    print(f"{subject}: {score}点")
実行結果
数学 英語 国語
85 72 90
数学: 85点
英語: 72点
国語: 90点

辞書の内包表記

辞書もリストと同様に、内包表記で簡潔に作成できます。

Python
# 辞書内包表記
squares = {x: x**2 for x in range(1, 6)}
print(squares)

# 条件付き
scores = {"数学": 85, "英語": 72, "国語": 90, "理科": 55}
passed = {k: v for k, v in scores.items() if v >= 70}
print(f"合格科目: {passed}")
実行結果
{1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
合格科目: {'数学': 85, '英語': 72, '国語': 90}
辞書のキーに使える型

辞書のキーには、イミュータブル(変更不可)な型のみ使えます。文字列、数値、タプルはキーに使えますが、リストや辞書はキーに使えません。

辞書の順序について

Python 3.7以降、辞書は挿入順序を保持するようになりました。それ以前のバージョンでは順序が保証されないため、順序が重要な場合は collections.OrderedDict を使う必要がありました。

まとめ

  • 辞書は {キー: 値} でデータをペアで管理する
  • get()メソッドで安全に値を取得できる
  • .items(), .keys(), .values() でループできる
  • 辞書内包表記で簡潔に辞書を作成できる
  • キーにはイミュータブルな型のみ使用可能