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.