KeyError: 'some_key'

Last Updated on 2025年7月28日

概要

Pythonで辞書(dictionary)を扱う際に、存在しないキーにアクセスしようとして発生するのが「KeyError: 'some_key'」です。初心者から上級者までよく直面するこのエラーについて、原因から対処法まで詳しく解説します。

目次

エラー内容

まずは実際のエラー例を見てみましょう。

このコードを実行すると、以下のようなエラーが出ます。

この「KeyError」は、辞書に存在しないキー 'gender' にアクセスしようとしたために発生しています。

原因

KeyErrorは、以下のようなケースで発生します。

  • 辞書に存在しないキーを直接指定してアクセスした
  • APIレスポンスなどの辞書に、想定していたキーが含まれていなかった
  • 文字列のタイポ(例:'username' と 'user_name')
  • キーの型が異なる(例:int型のキーをstrでアクセスしようとした)

Pythonの辞書は、存在しないキーにアクセスしようとすると即座にエラーを出す仕様です。

対処法

KeyErrorへの主な対処法は以下の通りです。

1. in演算子でキーの存在確認

2. get()メソッドの使用

get()を使うと、キーが存在しない場合でもデフォルト値を返してくれます。

3. try-except構文の活用

4. defaultdictの利用(collectionsモジュール)

5. キーの一覧を事前に確認

辞書のキー一覧を表示して、存在しないキーをアクセスしないように事前確認するのも有効です。

補足

辞書はとても便利なデータ構造ですが、扱いを間違えるとエラーの原因になります。以下のような場面では特に注意が必要です。

  • Web APIからのJSONレスポンス:レスポンス内容が変わることがある
  • ループ処理中の辞書アクセス:キーの存在チェックを忘れると全体が止まる
  • マージ処理:意図しないキーが上書きされる可能性がある

Pythonのバージョンによる違い

Python 3.7以降は辞書の順序が保証されるようになりましたが、KeyError自体の仕様は変わりません。

カスタムエラー処理を作成する

まとめ

  • KeyErrorは辞書に存在しないキーを指定した場合に発生
  • 対策としては in演算子, get(), try-except などの構文がある
  • 予防のためには、データ構造の設計や仕様を明確にしておくことが重要

辞書を扱う際は、常に「そのキーは本当に存在するのか?」を意識することで、KeyErrorの発生を未然に防げます。特に外部からデータを受け取るケースでは注意が必要です。