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

Barbara Streisand
發布: 2024-11-02 19:22:30
原創
789 人瀏覽過

How Can I Safely Delete Items From a Dictionary While Iterating in Python?

在迭代期間從字典中刪除項目

在迭代字典時通常需要修改字典的內容。但是,在迭代期間直接刪除項目可能會導致錯誤或不一致的結果。

使用 del 進行迭代 (Python 2)

在 Python 2 中,在迭代時使用 del 刪除項目可能會導致問題,因為迭代器期望字典的大小保持不變。此行為會導致運行時錯誤。建議改用keys 或items 方法:

<code class="python">for k in mydict.keys():
    if k == val:
        del mydict[k]

# or

for k, v in mydict.items():
    if v == val:
        del mydict[k]</code>
登入後複製

使用del 進行迭代(Python 3 )

在Python 3 中,mydict.keys() 傳回一個迭代器,而不是一個列表。在迭代期間修改字典將導致運行時錯誤。為了避免這種情況,請在使用del 之前將迭代器轉換為清單:

<code class="python">for k in list(mydict.keys()):
    if mydict[k] == 3:
        del mydict[k]</code>
登入後複製

使用pop()

另一個選擇是使用pop() 方法刪除項目:

<code class="python">while mydict:
    k, v = mydict.popitem()
    if v == 3:
        mydict[k] = v

# or

for k in mydict.copy():
    if mydict[k] == 3:
        mydict.pop(k)</code>
登入後複製

建議

對於Python 3,建議使用帶有列表轉換的keys或items方法以避免運行時錯誤。對於Python 2,應該直接使用keys或items方法來安全地修改字典。

以上是在 Python 中迭代時如何安全地從字典中刪除項目?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!