Handling missing keys in Python dictionaries
Last Updated :
13 Nov, 2025
In Python, dictionaries are key-value containers that provide fast access to data with a time complexity of O(1). However, in many applications, the user may not know all the keys present in a dictionary. Accessing a missing key directly results in a KeyError.
For Example:
Python
dic = {'a': 1, 'b': 2}
print("The value associated with 'c' is:")
print(dic['c'])
Output
KeyError: 'c'
Notice that key = 'c' doesn't exist in the dictionary and that's why accessing it is giving KeyError.
Below are different methods of handling this in Python:
Using defaultdict
defaultdict from the collections module is highly efficient and avoids repeatedly writing checks. It allows you to set a default value for missing keys at the time of dictionary creation.
Python
from collections import defaultdict
dic = defaultdict(lambda: 'Key Not found')
dic['a'] = 1
dic['b'] = 2
print(dic['a'])
print(dic['c'])
Explanation:
- defaultdict(lambda: 'Key Not found'): creates a dictionary that returns a default value for missing keys instead of raising KeyError.
- dic['a'] = 1 and dic['b'] = 2 add existing keys.
Using get() Method
get() method allows you to retrieve a value if the key exists, or return a default value otherwise.
Python
dic= {'India': '0091', 'Australia': '0025', 'Nepal': '00977'}
print(dic.get('India', 'Not Found'))
print(dic.get('Japan', 'Not Found'))
Explanation:
- get(): retrieves the value for a given key.
- If the key exists, it returns its value, if not, it returns the default message provided.
Using setdefault() Method
setdefault() method works like get(), but if the key is missing, it creates the key with a default value.
Python
dic = {'India': '0091', 'Australia': '0025', 'Nepal': '00977'}
dic.setdefault('Japan', 'Not Present')
print(dic['India'])
print(dic['Japan'])
Explanation:
- setdefault(): returns the value of a key if it exists.
- If the key doesn’t exist, it adds the key with the given default value.
Using try-except Block
You can handle missing keys by catching the KeyError exception
Python
dic = {'India': '0091', 'Australia': '0025', 'Nepal': '00977'}
try:
print(dic['India'])
print(dic['USA'])
except KeyError:
print('Not Found')
Explanation:
- try-except block handles missing keys safely.
- Inside try, it tries to access dictionary values.
- If a key doesn’t exist, a KeyError is raised and caught by except, which prints 'Not Found'.
Using if key in dict
Python
dic = {'a': 5, 'c': 8, 'e': 2}
if 'q' in dic:
print(dic['q'])
else:
print("Key not found")
Explanation:
- code checks if a key exists in the dictionary using the "in" operator.
- if the key is found, its value is printed; otherwise, a custom message is shown.
Related Articles:
Explore
Python Fundamentals
Python Data Structures
Advanced Python
Data Science with Python
Web Development with Python
Python Practice