首頁  >  文章  >  後端開發  >  如何在 Python 迭代過程中安全地從字典中刪除項目?

如何在 Python 迭代過程中安全地從字典中刪除項目?

Patricia Arquette
Patricia Arquette原創
2024-10-30 19:12:30940瀏覽

How to Safely Delete Items from a Dictionary During Iteration in Python?

在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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn