Home > Article > Backend Development > How to Safely Delete Items from a Dictionary While Iterating in Python?
Iterative Dictionary Modification
It is common to need to delete items from a dictionary while simultaneously iterating over it. However, this operation is not natively supported in Python.
Modifying a dictionary while iterating over it can lead to errors. For instance, the code snippet you provided may fail in Python 3 with the error:
RuntimeError: dictionary changed size during iteration.
Python 3 Solution
In Python 3, the solution is to create a list of keys from the dictionary and iterate over that list instead. Here's an example:
<code class="python"># Python 3 or higher for k in list(mydict.keys()): if mydict[k] == 3: del mydict[k]</code>
This approach works because a list is immutable and won't be affected by changes to the dictionary.
Python 2 Solution
In Python 2, the keys() method returns an iterator, which cannot be modified during iteration. To modify the dictionary, you can use the following approach:
<code class="python"># Python 2 for k, v in mydict.items(): if v == 3: del mydict[k]</code>
In Python 2, you can also convert the iterator to a list:
<code class="python">for k in mydict.keys(): if mydict[k] == 3: del mydict[k]</code>
Alternative Approach
Alternatively, you can use the pop() method to delete items from the dictionary while iterating:
<code class="python">for k in list(mydict.keys()): if k == 3: mydict.pop(k)</code>
Note that this approach is more efficient because it doesn't create an additional list.
The above is the detailed content of How to Safely Delete Items from a Dictionary While Iterating in Python?. For more information, please follow other related articles on the PHP Chinese website!