How can I remove a key from a Python dictionary?
To delete a key regardless of whether it is in the dictionary, use the two-argument form of
This will return
key exists in the dictionary, and
None otherwise. If the second parameter is not specified (i.e.
key does not exist, a
KeyError is raised.
To delete a key that is guaranteed to exist, you can also use:
This will raise a
KeyError if the key is not in the dictionary.
Specifically to answer "is there a one line way of doing this?"
if 'key' in my_dict: del my_dict['key']
...well, you asked ;-)
You should consider, though, that this way of deleting an object from a
dict is not atomic—it is possible that
'key' may be in
my_dict during the
if statement, but may be deleted before
del is executed, in which case
del will fail with a
KeyError. Given this, it would be safest to either use
dict.pop or something along the lines of
try: del my_dict['key']except KeyError: pass
which, of course, is definitely not a one-liner.
It took me some time to figure out what exactly
my_dict.pop("key", None) is doing. So I'll add this as an answer to save others googling time:
If key is in the dictionary, remove it and return its value, elsereturn default. If default is not given and key is not in thedictionary, a