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

Linda Hamilton
發布: 2024-11-02 18:01:29
原創
260 人瀏覽過

How to Safely Delete Items from a Dictionary While Iterating in Python?

迭代字典修改

通常需要在迭代字典的同時刪除字典中的項目。但是,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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板