まず結論
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" はまだありません。
3行まとめ
- KeyErrorは、辞書にないキーを取り出そうとしたときに出る。
- キー名のつづり違いや、大文字小文字の違いで起きやすい。
- まず辞書の中にそのキーがあるか確認する。