This is really only easy to explain with an example, so to remove the intersection of a list from within a dict I usually do something like this:
a = {1:'', 2:'', 3:'', 4:''} exclusion = [3, 4, 5] # have to build up a new list or the iteration breaks toRemove = [] for var in a.iterkeys(): if var in exclusion: toRemove.append(var) for var in toRemove: del a[var]
This might seem like an unusual example, but it’s surprising the number of times I’ve had to do something like this. Doing this with sets would be much nicer, but I clearly want to retain the ‘values’ for the dict.
This method is annoying because it requires two loops and an extra array. Is there a cleaner and more efficient way of doing this.
Consider dict.pop:
The
Nonekeeps pop from raising an exception whenkeyisn’t a key.