」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何在 Python 中迭代時安全地從字典中刪除項目?

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

發佈於2024-11-12
瀏覽:613

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

迭代字典修改

通常需要在迭代字典的同時從字典中刪除項目。但是,Python 本身不支援此操作。

在迭代字典時修改字典可能會導致錯誤。例如,您提供的程式碼片段在 Python 3 中可能會失敗,並出現錯誤:

RuntimeError: dictionary changed size during iteration.

Python 3 Solution

在 Python 3 中,解決方案是從字典中建立一個鍵列表,然後迭代該列表。這是一個範例:

# Python 3 or higher

for k in list(mydict.keys()):
    if mydict[k] == 3:
        del mydict[k]

此方法有效,因為列表是不可變的,不會受到字典更改的影響。

Python 2 解

在Python 2中,keys()方法傳回一個迭代器,迭代過程中不能修改此迭代器。要修改字典,可以使用以下方法:

# Python 2

for k, v in mydict.items():
    if v == 3:
        del mydict[k]

在Python 2中,您也可以將迭代器轉換為清單:

for k in mydict.keys():
    if mydict[k] == 3:
        del mydict[k]

替代方法

或者,您可以使用pop() 方法在迭代時從字典中刪除項目:

for k in list(mydict.keys()):
    if k == 3:
        mydict.pop(k)

請注意,這種方法更有效,因為它不會建立額外的清單。

最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3