在Python 中迭代時從字典中刪除項目
在Python 中使用字典時,可能存在需要刪除項目的情況在迭代期間符合特定標準。雖然直觀上來說,直接迭代字典並刪除遇到的項目似乎就足夠了,但這種方法是有問題的。
迭代過程中直接刪除的挑戰
在Python 3 中,在迭代字典時直接刪除字典中的項目會引發執行階段錯誤。這是因為在迭代期間修改字典大小會導致迭代器發生故障。
在 Python 2 中,如果要刪除的項是迭代序列中的下一個項,這種直接刪除方法會導致錯誤。
解決方案
要在迭代時安全地從字典中刪除項目,以下是建議的解決方案:
Python 3 :
在迭代之前使用list(mydict.keys()) 將字典鍵轉換為列表。這允許您在更改字典時迭代列表:
<code class="python">for k in list(mydict.keys()): if mydict[k] == 3: del mydict[k]</code>
Python 2:
利用keys()或items()方法分別建立鍵列表或鍵值對元組。然後,您可以安全地迭代這些清單以刪除項目,而不會中斷迭代器:
<code class="python">for k in mydict.keys(): if k == 'two': del mydict[k]</code>
<code class="python">for k, v in mydict.items(): if v == 3: del mydict[k]</code>
以上是如何在 Python 迭代過程中安全地從字典中刪除項目?的詳細內容。更多資訊請關注PHP中文網其他相關文章!