How can I remove a key from a Python dictionary?

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 dict.pop():

my_dict.pop(key, None)

This will return my_dict[key] if key exists in the dictionary, and None otherwise. If the second parameter is not specified (i.e. my_dict.pop(key)) and key does not exist, a KeyError is raised.

To delete a key that is guaranteed to exist, you can also use:

del my_dict[key]

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.

How can I remove a key from a Python dictionary?

How can I remove a key from a Python dictionary?

It took me some time to figure out what exactly my_dict.pop(key, None) is doing. So Ill add this as an answer to save others googling time:

pop(key[, default])

If key is in the dictionary, remove it and return its value, else
return default. If default is not given and key is not in the
dictionary, a KeyError is raised.

Documentation

Leave a Reply

Your email address will not be published. Required fields are marked *