KeyError

Python SystemRuntime ErrorCommonLast updated: June 29, 2026Tested on:CPython v3.12PIP v24.0June 2026

This error occurs when you attempt to access a dictionary key that does not exist in the collection.

KeyError Quick Fix⏱️ Est. Fix Time: 1 minute

Usually happens because:

  • Target lookup key is missing from dictionary mappings
  • Key type mismatch (e.g. searching integer 1 instead of string '1')
  • Typo or whitespace differences in key string parameter

🔍 Quick Checklist:

What is KeyError?

A 'KeyError' is raised at runtime when a dictionary lookup operation fails to find the requested key. Unlike some languages where missing keys return a default value (like 'undefined' in JavaScript), Python raises this exception immediately to prevent developer oversights. Modern Python (Python 3.11+) traceback prints the exact missing key string inline.

Common Causes

  • Accessing non-existent key: Directly requesting 'my_dict[key]' when 'key' has not been defined in the dictionary.
  • Key type mismatch: Querying with a key of the wrong type (such as using an integer '1' instead of string '"1"', or vice versa).
  • Whitespace spelling typo: Simple spelling typos or leading/trailing whitespace mismatches in the lookup key string.
CauseFrequency
Directly querying non-existent dictionary keys⭐⭐⭐⭐⭐
Key type mapping mismatch (e.g. integer vs string)⭐⭐⭐⭐
Spelling typo or hidden trailing whitespace in key⭐⭐⭐

Common Mistakes

  • Assuming numeric strings and raw integers map to the same key value (e.g. querying `d[1]` to access a value defined under key `"1"`).
  • Running direct lookups on nested dictionaries (e.g. `data["user"]["address"]`) assuming outer keys are always present, throwing KeyErrors on nested levels.

How to Fix

1Use the dict.get() method: Use '.get(key, default)' to return a fallback default value (or 'None') instead of raising exceptions.
2Verify key existence: Guard index lookups using the 'in' membership check operator ('if key in my_dict:').
3Use defaultdict class: Instantiate dictionary wrappers from the collections module ('from collections import defaultdict') to automate default values for missing keys.

Python Operations & Verification

Utilize the safe get method or check key presence with membership checks prior to access.

Dict Get and Guards Example
user = {"name": "Alice", "age": 30}

# 1. Safe get method (returns None instead of raising KeyError)
user_email = user.get("email")

# 2. Provide custom fallback value if key is missing
user_role = user.get("role", "standard_user")

# 3. Membership check guard
if "email" in user:
    print(user["email"])

Platform Specific Fixes

Verify dictionary lookups behaviors in python shells.

Linux Config
python3 -c "d = {'a': 1}; print(d.get('b', 'Missing'))"

Best Practices

  • Adopt schema validation libraries (like Pydantic or Marshmallow) when parsing raw JSON payloads from APIs.
  • Utilize safe default structures when executing dictionary accumulators.

Frequently Asked Questions (FAQ)

Q: What is a KeyError?

It is a runtime exception raised when you attempt to retrieve a value from a dictionary using a key that does not exist in the dictionary.

Q: How is 'dict.get()' different from bracket indexing?

Bracket indexing ('my_dict["key"]') raises a KeyError if the key is missing. The '.get("key", default)' method returns 'None' (or your specified default value) instead of raising an error.

Q: How do I avoid KeyErrors when building a counter?

Use the 'collections.defaultdict(int)' class. It automatically initializes missing keys to 0 when you increment them.

Q: Why did 'my_dict[1]' fail when I have '1' as a key?

Python keys are strictly typed. The integer '1' is different from the string '"1"'. If your dictionary has string keys, lookup using an integer will fail with a KeyError.

Still having this problem?

Didn't solve your problem?

SuggestRequest Error