まず結論

KeyError は、辞書にないキーを取り出そうとしたときに出ます。

user = {"name": "モコ"}
print(user["age"])

この辞書には "age" というキーがないため、エラーになります。

こんなときに読む記事です

次のようなエラーで止まった人向けです。

KeyError: 'age'

意味は「age というキーが見つかりません」に近いです。

絵で見るなら

辞書は、キー名のついた引き出し棚として見ると分かりやすいです。

"name" の引き出しはあります。

でも "age" の引き出しがなければ、そこから値は取り出せません。

モコが棚のラベルを見比べて、探しているキーがあるか確認するイメージです。

キー名を確認する

まずは、辞書の中にそのキーがあるか見ます。

user = {"name": "モコ"}

print(user["name"])

"name" は辞書の中にあるので取り出せます。

"age" を取り出したいなら、先に辞書へ入れておく必要があります。

つづり違いに注意

キー名は、つづりが違うと別のキーとして扱われます。

user = {"name": "モコ"}
print(user["Name"])

"name""Name" は別です。

大文字小文字も区別されます。

追加してから取り出す

必要なキーがないなら、値を入れてから取り出します。

user = {"name": "モコ"}
user["age"] = 3

print(user["age"])

これで "age" のキーがある状態になります。

よくある勘違い

辞書は、リストのように番号で取り出すものではありません。

辞書では、キーの名前を使って値を取り出します。

そのため、キー名を少しでも間違えると別の引き出しを探してしまいます。

読み方のコツ

KeyError が出たら、次のように考えます。

そのキーは、この辞書の中にある?

エラー文に出ているキー名と、辞書に入っているキー名を見比べると原因を見つけやすいです。

手を動かすミニ練習

キー名を変えて、成功する場合と失敗する場合を見比べてみましょう。

user = {"name": "モコ"}

print(user["name"])
print(user["age"])

"name" はありますが、"age" はまだありません。