Sometimes you want to delete items from a dictionary when they are no longer needed or to clean up data.
Removing dictionary entries in Python
Start learning this pattern below
Jump into concepts and practice - no test required
my_dict = {'key1': 'value1', 'key2': 'value2'}
# Remove an entry by key
removed_value = my_dict.pop('key1')
# Remove an entry by key with default if key not found
removed_value = my_dict.pop('key3', None)
# Remove and return an arbitrary item
key, value = my_dict.popitem()
# Delete an entry by key without return
del my_dict['key2']pop(key) removes the key and returns its value. It raises an error if the key is missing.
pop(key, default) returns default if key is missing instead of error.
my_dict = {'a': 1, 'b': 2, 'c': 3}
removed_value = my_dict.pop('b')
print(my_dict)
print(removed_value)my_dict = {'a': 1}
removed_value = my_dict.pop('z', 'Not found')
print(removed_value)
print(my_dict)my_dict = {}
# Using popitem on empty dict raises error
try:
my_dict.popitem()
except KeyError as error:
print('Error:', error)my_dict = {'x': 10}
del my_dict['x']
print(my_dict)This program shows how to remove entries from a dictionary using pop and del. It also shows how to safely try to remove a key that might not exist.
def print_dictionary_state(stage, dictionary): print(f"{stage}: {dictionary}") user_data = {'name': 'Alice', 'age': 30, 'city': 'Wonderland'} print_dictionary_state('Original dictionary', user_data) # Remove 'age' using pop removed_age = user_data.pop('age') print(f"Removed 'age' with value: {removed_age}") print_dictionary_state('After removing age', user_data) # Remove 'city' using del del user_data['city'] print_dictionary_state('After deleting city', user_data) # Try to remove 'country' with pop and default removed_country = user_data.pop('country', 'Not found') print(f"Attempted to remove 'country', got: {removed_country}") print_dictionary_state('Final dictionary', user_data)
Time complexity: Removing an entry by key is usually O(1).
Space complexity: No extra space is needed; the dictionary is modified in place.
Using pop with a default value helps avoid errors if the key is missing.
Using del on a missing key causes a KeyError, so be careful.
Use pop(key) to remove and get the value of a key.
Use pop(key, default) to avoid errors if the key is missing.
Use del dict[key] to remove a key without returning its value.
Practice
pop(key) method do when used on a Python dictionary?Solution
Step 1: Understand the pop method
Thepop(key)method removes the specified key from the dictionary and returns its value.Step 2: Compare with other methods
Unlikedel dict[key],popreturns the removed value.Final Answer:
Removes the key and returns its value -> Option AQuick Check:
pop(key) = remove key + return value [OK]
- Thinking pop only returns value without removal
- Confusing pop with del which doesn't return value
- Assuming pop deletes entire dictionary
'age' from dictionary person without returning its value?Solution
Step 1: Identify syntax for deletion without return
To remove a key without returning its value, usedel dict[key].Step 2: Check options
del person['age'] usesdel person['age'], which is correct syntax. Options C and D are invalid methods.Final Answer:
del person['age'] -> Option DQuick Check:
del dict[key] removes key without return [OK]
- Using pop when no return is needed
- Using non-existent methods like remove or delete
- Wrong syntax like person.delete('age')
data = {'a': 1, 'b': 2, 'c': 3}
value = data.pop('b')
print(value, data)Solution
Step 1: Use pop to remove key 'b'
Thepop('b')removes key 'b' and returns its value 2.Step 2: Print returned value and updated dictionary
After removal, dictionary is {'a': 1, 'c': 3}. Printing value and dict shows: 2 {'a': 1, 'c': 3}.Final Answer:
2 {'a': 1, 'c': 3} -> Option CQuick Check:
pop returns value and removes key [OK]
- Expecting original dict unchanged
- Thinking pop returns None
- Confusing pop with del which returns nothing
info = {'name': 'Alice', 'age': 30}
info.pop('gender')Solution
Step 1: Understand pop behavior without default
Callingpopon a missing key without a default raises aKeyError.Step 2: Check code
Since 'gender' is not ininfo,info.pop('gender')raisesKeyError.Final Answer:
KeyError -> Option BQuick Check:
pop missing key without default = KeyError [OK]
- Expecting None instead of error
- Thinking pop returns the key name
- Confusing with pop(key, default)
items = {'apple': 5, 'banana': 0, 'cherry': 7}, which code removes all entries with value 0 or less safely without errors?Solution
Step 1: Avoid modifying dict while iterating
Directly deleting keys while iterating causes runtime errors. Usinglist(items)copies keys safely.Step 2: Use pop to remove keys with value ≤ 0
Loop over copied keys, check value, and usepopto remove safely.Final Answer:
for k in list(items): if items[k] <= 0: items.pop(k) -> Option AQuick Check:
Iterate on list copy + pop keys safely [OK]
- Deleting keys directly while iterating causes error
- Using pop without copying keys list
- Removing only one key instead of all matching
