Python Dictionary pop() Method
dict.pop() removes a key from a dictionary and returns the value that was stored under that key.
This method is useful when you want to delete a key and still keep its value for later use. It is also a common way to remove a key safely when you provide a default value.
Quick answer #
person = {"name": "Ana", "age": 25}
removed_age = person.pop("age")
print(removed_age) # 25
print(person) # {'name': 'Ana'}
# Safe version with default value
country = person.pop("country", "Not found")
print(country) # Not found
Use pop(key) to remove a key and get its value. Use pop(key, default) to avoid a KeyError when the key might not exist.
What dict.pop() does #
dict.pop():
- Removes one key from a dictionary
- Returns the value that belonged to that key
- Changes the original dictionary
- Works only with dictionary keys, not positions
Example:
user = {"name": "Liam", "city": "Paris"}
removed_city = user.pop("city")
print(removed_city) # Paris
print(user) # {'name': 'Liam'}
Here, "city" is the key being removed. The method returns its value, which is "Paris".
Basic syntax #
There are two common forms:
my_dict.pop(key)
my_dict.pop(key, default)
dict.pop(key)removes the key if it existsdict.pop(key)raisesKeyErrorif the key is missingdict.pop(key, default)returns the default value if the key is missing- The second form is safer when you are not sure the key exists
Example:
scores = {"math": 90, "science": 85}
print(scores.pop("math")) # 90
print(scores.pop("history", 0)) # 0
print(scores) # {'science': 85}
Return value #
pop() does not return the updated dictionary.
Instead, it returns:
- The removed value when the key exists
- The default value if you provided one and the key is missing
Example:
data = {"a": 10, "b": 20}
result1 = data.pop("a")
result2 = data.pop("c", "missing")
print(result1) # 10
print(result2) # missing
print(data) # {'b': 20}
If you only want to read a value without removing it, use dict.get() instead.
When to use pop() #
Use pop() when:
- You want to remove a key and keep its value
- You are processing dictionary data step by step
- You are cleaning or extracting values from a dictionary
Example:
product = {"name": "Laptop", "price": 1200, "discount": 200}
discount_amount = product.pop("discount", 0)
final_price = product["price"] - discount_amount
print(discount_amount) # 200
print(final_price) # 1000
print(product) # {'name': 'Laptop', 'price': 1200}
This is helpful when you want to take one piece of data out and then continue working with the remaining dictionary.
pop() vs del #
Both pop() and del can remove a key from a dictionary, but they are not the same.
Use pop() when you need the removed value #
person = {"name": "Ana", "age": 25}
age = person.pop("age")
print(age) # 25
print(person) # {'name': 'Ana'}
Use del when you only want deletion #
person = {"name": "Ana", "age": 25}
del person["age"]
print(person) # {'name': 'Ana'}
Difference:
pop()removes a key and returns its valuedelremoves a key but does not return the value
If your goal is simply to remove a key, see how to remove a key from a dictionary in Python.
How to avoid KeyError #
A common beginner problem is trying to remove a key that does not exist.
Option 1: Use a default value #
my_dict = {"name": "Sara"}
value = my_dict.pop("age", None)
print(value) # None
print(my_dict) # {'name': 'Sara'}
This is the safest and shortest option.
Option 2: Check first #
my_dict = {"name": "Sara"}
if "age" in my_dict:
value = my_dict.pop("age")
print(value)
else:
print("Key not found")
Option 3: Use get() if you do not want to remove anything #
my_dict = {"name": "Sara"}
value = my_dict.get("age", None)
print(value) # None
print(my_dict) # {'name': 'Sara'}
Use dict.get() when you only need to read a value. If you are seeing this error already, read KeyError in Python: causes and fixes.
Common beginner mistakes #
Here are some mistakes that happen often with dict.pop().
Thinking pop() removes by position like a list #
Lists use indexes:
numbers = [10, 20, 30]
print(numbers.pop(1)) # 20
Dictionaries use keys:
person = {"name": "Ana", "age": 25}
print(person.pop("age")) # 25
A dictionary does not use positions with pop(). It uses keys.
Forgetting that pop() changes the original dictionary #
data = {"x": 1, "y": 2}
value = data.pop("x")
print(value) # 1
print(data) # {'y': 2}
After pop(), the key is gone from the same dictionary object.
Using pop() on a missing key without a default value #
data = {"name": "Mia"}
# This causes an error
# data.pop("age")
Safer version:
data = {"name": "Mia"}
print(data.pop("age", "missing")) # missing
Expecting pop() to return the whole dictionary #
data = {"a": 1, "b": 2}
result = data.pop("a")
print(result) # 1
print(data) # {'b': 2}
The return value is the removed value, not the updated dictionary.
Common causes of problems #
Problems with dict.pop() often happen because of one of these reasons:
- Using a key that does not exist in the dictionary
- Mixing up list
pop(index)with dictionarypop(key) - Removing data that is still needed later in the code
- Using the wrong key type, such as
1instead of"1"
Example of wrong key type:
data = {"1": "one"}
print(data.pop(1, "not found")) # not found
print(data.pop("1", "not found")) # one
1 and "1" are different keys.
Helpful debugging checks #
If pop() is not working the way you expect, these quick checks can help:
print(my_dict)
print(my_dict.keys())
print('name' in my_dict)
print(my_dict.pop('name', 'missing'))
print(type(my_dict))
What these checks tell you:
print(my_dict)shows the current dictionary contentsprint(my_dict.keys())shows all available keysprint('name' in my_dict)checks whether a key existsprint(my_dict.pop('name', 'missing'))tests safe removalprint(type(my_dict))confirms that the object is really a dictionary
If you need to understand dictionary basics first, see creating a dictionary in Python.
FAQ #
Does dictionary pop() return the key or the value? #
It returns the value for the removed key.
What happens if the key does not exist? #
pop(key) raises KeyError. pop(key, default) returns the default value instead.
Does pop() change the original dictionary? #
Yes. It removes the key from the existing dictionary.
Can I use pop() to remove the last item in a dictionary? #
Not with dict.pop(). To remove the last inserted key-value pair, use popitem().
What is the difference between get() and pop()? #
get() reads a value without removing it. pop() reads and removes it.