在迭代字典時通常需要修改字典的內容。但是,在迭代期間直接刪除項目可能會導致錯誤或不一致的結果。
在 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>
在Python 3 中,mydict.keys() 傳回一個迭代器,而不是一個列表。在迭代期間修改字典將導致運行時錯誤。為了避免這種情況,請在使用del 之前將迭代器轉換為清單:
<code class="python">for k in list(mydict.keys()): if mydict[k] == 3: del mydict[k]</code>
另一個選擇是使用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中文網其他相關文章!