迭代字典修改
通常需要在迭代字典的同時刪除字典中的項目。但是,Python 本身不支援此操作。
在迭代字典時修改字典可能會導致錯誤。例如,您提供的程式碼片段在Python 3 中可能會失敗,並出現錯誤:
RuntimeError: dictionary changed size during iteration.
Python 3 解
在Python 3 中,解決方案是建立字典中的鍵列表並迭代該列表。以下是一個範例:<code class="python"># Python 3 or higher for k in list(mydict.keys()): if mydict[k] == 3: del mydict[k]</code>此方法之所以有效,是因為清單是不可變的,並且不會受到字典變更的影響。
Python 2 解
在Python 2中,keys()方法傳回一個迭代器,迭代過程中不能修改該迭代器。要修改字典,可以使用以下方法:<code class="python"># Python 2 for k, v in mydict.items(): if v == 3: del mydict[k]</code>在Python 2 中,您也可以將迭代器轉換為列表:
<code class="python">for k in mydict.keys(): if mydict[k] == 3: del mydict[k]</code>
替代方法
或者,您可以使用pop() 方法在迭代時從字典中刪除項目:<code class="python">for k in list(mydict.keys()): if k == 3: mydict.pop(k)</code>請注意,這種方法更有效,因為它不會建立附加清單。
以上是如何在 Python 中迭代時安全地從字典中刪除項目?的詳細內容。更多資訊請關注PHP中文網其他相關文章!