こんにちは、かつコーチです。
これまでリストとタプルを解説してきましたが、今回は辞書(dict)を取り上げます。
辞書とは、「キー」と「値」をペアにしてデータを管理できる構造のことです。
リストがインデックス(番号)で要素を管理するのに対し、辞書は名前(キー)で値を管理できるのが大きな特徴です。
「名前で名前を管理したいのに、リストでインデックス番号を数えながら探していた」というのが、私が辞書のありがたみを実感した瞬間でした。
この記事では、辞書の作成から値の取得・追加・削除、そしてエラーを防ぐget()の使い方まで解説します。
基本の書き方:辞書の作成と操作
辞書を作成する
辞書は{}(波かっこ)を使い、キー: 値の形で作成します。
user = {
"name": "かつコーチ",
"age": 30,
"job": "エンジニア",
}
print(user)
# {'name': 'かつコーチ', 'age': 30, 'job': 'エンジニア'}
キーには文字列だけでなく、数値やタプルなど、イミュータブルな値を使うこともできます。
値を取得する
キーを指定して値を取り出します。
print(user["name"])
# かつコーチ
値を追加・更新する
新しいキーに値を代入すると、要素が追加されます。
user["email"] = "katsu@example.com"
print(user)
# {'name': 'かつコーチ', 'age': 30, 'job': 'エンジニア', 'email': 'katsu@example.com'}
既存のキーに代入すると、値が上書きされます。
user["age"] = 31
print(user["age"])
# 31
値を削除する
del文またはリストのpopと同様のpop()メソッドで削除できます。
del user["email"]
print(user)
# {'name': 'かつコーチ', 'age': 31, 'job': 'エンジニア'}
removed_value = user.pop("job")
print(removed_value)
# エンジニア
つまずきやすい設定・注意点
辞書のキーをfor文でループするとき、初心者はよく次のように書きがちです。
for key in user:
print(key, user[key])
これでも動きますが、キーと値を同時に扱いたいならitems()を使う方が読みやすくなります。
for key, value in user.items():
print(f"{key}: {value}")
# name: かつコーチ
# age: 31
よくあるつまずきポイント・エラー対処
存在しないキーを指定してエラーになる
❌ Before:[]で存在しないキーにアクセスする
私が辞書を使い始めたころ、ユーザーの登録情報を扱うプログラムで、次のようなコードを書いていました。
user = {"name": "かつコーチ", "age": 31}
print(user["phone"])
「電話番号」のキーがまだ登録されていないユーザーもいる、ということを考慮していなかったため、次のエラーが発生しました。
KeyError: 'phone'
このエラーはプログラムの実行を止めてしまうため、実際のアプリでは処理全体が落ちてしまい、原因調査に時間を取られました。
✅ After:get()でデフォルト値を指定する
get()メソッドを使うと、キーが存在しない場合でもエラーにならず、代わりに指定したデフォルト値を返してくれます。
user = {"name": "かつコーチ", "age": 31}
phone = user.get("phone", "未登録")
print(phone)
# 未登録
第2引数を省略した場合は、Noneが返ります。
phone = user.get("phone")
print(phone)
# None
この経験以来、「キーが確実に存在すると分かっている場合以外はget()を使う」ことを徹底するようになりました。
特にユーザー入力やAPIのレスポンスなど、外部から来るデータを扱うときはget()が安全です。
キーの存在確認をしてから処理を分けたい場合
in演算子を使うと、キーの存在を条件分岐に使えます。
if "phone" in user:
print(user["phone"])
else:
print("電話番号は未登録です")
まとめ
この記事のポイント
- 辞書は
{}を使い、キーと値のペアでデータを管理する - 値の取得は
辞書[キー]、追加・更新は代入で行う - 削除は
del文またはpop()メソッドを使う - 存在しないキーに
[]でアクセスするとKeyErrorが発生する get(キー, デフォルト値)を使えばエラーを防ぎつつ安全に値を取得できる
次に読むべき記事
辞書を理解したら、次は重複を許さないデータ構造「セット(set)」と、その集合演算を見ていきましょう。
→ 次の記事:セット(set)の基本と集合演算
タグ: Python, 初心者向け, 基本文法
