To remove a key from a Python dictionary, you can use one of the following methods:
1. Using del
Statement
Syntax:del dict_name[key]
Removes the key-value pair if the key exists.
Throws KeyError
if the key is not found.
my_dict = {'a': 1, 'b': 2, 'c': 3}
del my_dict['b'] # Removes key 'b'
print(my_dict) # Output: {'a': 1, 'c': 3}
2. Using pop()
Method
Syntax:dict_name.pop(key[, default])
Removes the key and returns its value.
- Returns
default
if the key does not exist (preventsKeyError
). - Raises
KeyError
if the key is missing and nodefault
is provided.
my_dict = {'x': 10, 'y': 20}
# Remove 'x' and get its value
value = my_dict.pop('x')
print(value) # Output: 10
print(my_dict) # Output: {'y': 20}
# Safe removal with default (no error if key missing)
value = my_dict.pop('z', None)
print(value) # Output: None (key 'z' not found)
3. Using Dictionary Comprehension
Create a new dictionary excluding the key (original dict remains unchanged):
my_dict = {'a': 1, 'b': 2, 'c': 3}
new_dict = {k: v for k, v in my_dict.items() if k != 'b'}
print(new_dict) # Output: {'a': 1, 'c': 3}
4. popitem()
(Removes Last Inserted Key)
Syntax:dict_name.popitem()
Removes and returns the last inserted (key, value) pair (Python 3.7+).
my_dict = {'a': 1, 'b': 2, 'c': 3}
item = my_dict.popitem() # Removes ('c', 3)
print(my_dict) # Output: {'a': 1, 'b': 2}
Key Differences
Method | Returns Value? | Handles Missing Keys? | Modifies Original Dict? |
---|---|---|---|
del dict[key] | ❌ No | ❌ Raises KeyError | ✅ Yes |
dict.pop(key) | ✅ Yes | ❌ Raises KeyError | ✅ Yes |
dict.pop(key, default) | ✅ Yes | ✅ Returns default | ✅ Yes |
Dict Comprehension | ❌ No | ✅ Safe | ❌ Creates new dict |
When to Use Which?
del
: When you’re certain the key exists and don’t need the value.pop()
: When you need the removed value or want to avoid errors for missing keys.- Dict Comprehension: When you need a new dictionary without altering the original.
popitem()
: When working with ordered dicts and need to remove the last item.
Example Workflow
# Initialize dictionary
data = {'name': 'Alice', 'age': 30, 'city': 'Paris'}
# Remove 'age' and retrieve its value
age = data.pop('age', 'Key not found')
print(f"Removed age: {age}") # Output: Removed age: 30
# Attempt to remove non-existent key safely
data.pop('country', None) # No error
# Delete a confirmed existing key
del data['city']
print(data) # Output: {'name': 'Alice'}