Delete an element from a dictionary
The del
statement removes an element:
del d[key]
Note that this mutates the existing dictionary, so the contents of the dictionary changes for anybody else who has a reference to the same instance. To return a new dictionary, make a copy of the dictionary:
def removekey(d, key): r = dict(d) del r[key] return r
The dict()
constructor makes a shallow copy. To make a deep copy, see the copy
module.
Note that making a copy for every dict del
/assignment/etc. means you're going from constant time to linear time, and also using linear space. For small dicts, this is not a problem. But if you're planning to make lots of copies of large dicts, you probably want a different data structure, like a HAMT (as described in this answer).
pop
mutates the dictionary.
>>> lol = {"hello": "gdbye"} >>> lol.pop("hello") 'gdbye' >>> lol {}
If you want to keep the original you could just copy it.
I think your solution is best way to do it. But if you want another solution, you can create a new dictionary with using the keys from old dictionary without including your specified key, like this:
>>> a{0: 'zero', 1: 'one', 2: 'two', 3: 'three'}>>> {i:a[i] for i in a if i!=0}{1: 'one', 2: 'two', 3: 'three'}