迭代字典可以安全地修改底層項目嗎?
使用 iteritems() 遍歷 Python 字典時,字典的修改可能會導致意外的結果。刪除項目(例如del d[f(k)])可能會觸發「運行時錯誤:字典在迭代期間更改了大小。」
官方文件:
根據根據Python 文檔,不應在迭代期間修改字典。 iteritems() 方法迭代字典的鍵和值的副本,但不迭代底層字典本身。因此,對字典的直接修改(例如刪除或新增項目)將不會反映在迭代器中。
安全實務:
為了避免此問題,文件建議在迭代之前使用 d.copy().items() 建立字典的獨立副本。或者,可以迭代鍵列表並在循環內使用 del d[key] 或 d[key] = newValue。
部分修改:
While將項目新增至新鍵可能會導致問題,修改現有值通常是安全的。但是,請注意,修改現有鍵的值可能會更改其雜湊值,這可能會影響其在字典中的位置。
以上是在 Python 中使用'iteritems()”迭代時可以安全地修改字典嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!