Python Dictionary get() Method
The dictionary get() method lets you safely read a value from a dictionary.
It is useful when a key might be missing. Instead of crashing with a KeyError, get() returns None by default, or a custom fallback value if you provide one.
person = {"name": "Ana", "age": 25}
print(person.get("name")) # Ana
print(person.get("city")) # None
print(person.get("city", "N/A")) # N/A
Use get() when a dictionary key may be missing and you want a safe result instead of a KeyError.
What get() does
The get() method:
- Returns the value for a given key
- Returns
Noneif the key does not exist - Can return a custom default value instead
- Works on dictionary objects only
Example:
student = {"name": "Lina", "grade": 90}
print(student.get("name")) # Lina
print(student.get("email")) # None
In this example:
"name"exists, so its value is returned"email"does not exist, soget()returnsNone
If you are still learning how dictionaries work, see Python dictionaries explained.
Basic syntax
There are two common forms of get():
dictionary.get(key)
dictionary.get(key, default_value)
What each part means:
keyis the dictionary key you want to look updefault_valueis optional- If you do not provide a default, Python uses
None
Example:
settings = {"theme": "dark"}
print(settings.get("theme")) # dark
print(settings.get("language")) # None
print(settings.get("language", "en")) # en
When to use get()
Use get() when:
- A key might not exist
- You want to avoid
KeyError - You are reading optional data
- You are working with JSON, user input, or config data
Example with optional user data:
user = {"username": "sam", "email": "sam@example.com"}
print(user.get("username")) # sam
print(user.get("phone")) # None
print(user.get("phone", "Not provided")) # Not provided
This is common when some fields are optional.
If you want more help with reading dictionary values, see how to access values in a dictionary in Python.
get() vs square brackets
You can access dictionary values in two common ways:
data["key"]
data.get("key")
The difference is important.
Square brackets
Square brackets are strict. If the key is missing, Python raises a KeyError.
data = {"name": "Ana"}
print(data["name"]) # Ana
print(data["city"]) # KeyError
get()
get() is safe for missing keys.
data = {"name": "Ana"}
print(data.get("name")) # Ana
print(data.get("city")) # None
Use:
- Square brackets when the key must exist
get()when the key is optional
If you are seeing crashes from missing keys, read KeyError in Python: causes and fixes.
Using a default value
You can pass a second argument to get() to choose what should be returned if the key is missing.
profile = {"name": "Mia"}
print(profile.get("country", "Unknown")) # Unknown
This is useful for display text:
"Unknown""Not set""N/A"
It is also useful in calculations:
scores = {"math": 10, "science": 8}
total_history = scores.get("history", 0)
print(total_history) # 0
Here, 0 is a good default because the code expects a number.
Try to choose a default value that matches the type you expect:
- Use a string for text
- Use
0for numbers - Use
[]for lists if needed - Use
{}for dictionaries if needed
Important beginner notes
There are a few things beginners often miss about get().
get() does not add a missing key
This code does not create a new key:
person = {"name": "Ana"}
print(person.get("city")) # None
print(person) # {'name': 'Ana'}
The dictionary stays the same.
get() does not change the dictionary
It only reads a value safely.
settings = {"mode": "light"}
settings.get("theme", "dark")
print(settings) # {'mode': 'light'}
Even though "dark" was returned as a default, it was not saved into the dictionary.
A stored value can also be None
Sometimes get() returns None because:
- The key is missing, or
- The key exists and its value is actually
None
Example:
data = {"name": "Ana", "nickname": None}
print(data.get("nickname")) # None
print(data.get("city")) # None
Both lines print None, but they mean different things.
If you need to know whether the key exists, check with in:
data = {"name": "Ana", "nickname": None}
print("nickname" in data) # True
print("city" in data) # False
For a full beginner guide, see how to check if a key exists in a dictionary in Python.
Common mistakes
Here are some common problems when using get():
- Using square brackets for optional keys and getting a
KeyError - Forgetting that
get()returnsNoneif no default is provided - Assuming
get()creates a key automatically - Using a default value of the wrong type
Debugging steps that help:
print(my_dict)
print(my_dict.keys())
print('name' in my_dict)
print(my_dict.get('name'))
print(type(my_dict.get('name')))
What these checks tell you:
print(my_dict)shows the full dictionaryprint(my_dict.keys())shows which keys existprint('name' in my_dict)checks if a specific key existsprint(my_dict.get('name'))shows the returned valueprint(type(my_dict.get('name')))shows the value type
You may also want to learn about the dictionary keys() method and the dictionary items() method when inspecting dictionary contents.
FAQ
Does get() raise KeyError?
No. If the key is missing, it returns None or the default value you provide.
Does get() add a key to the dictionary?
No. It only reads a value safely.
What is the default return value of get()?
None, unless you pass a second argument.
Should I use get() or square brackets?
Use get() for optional keys. Use square brackets when the key must exist.