迭代字典可以安全地修改底层项目吗?
使用 iteritems() 遍历 Python 字典时,对字典的修改可能会导致意外的结果结果。删除项目(例如 del d[f(k)])可能会触发“运行时错误:字典在迭代期间更改了大小。”
官方文档:
根据根据 Python 文档,不应在迭代期间修改字典。 iteritems() 方法迭代字典的键和值的副本,但不迭代底层字典本身。因此,对字典的直接修改(例如删除或添加项目)将不会反映在迭代器中。
安全实践:
为了避免此问题,文档建议在迭代之前使用 d.copy().items() 创建字典的独立副本。或者,可以迭代键列表并在循环内使用 del d[key] 或 d[key] = newValue。
部分修改:
While将项目添加到新键可能会导致问题,修改现有值通常是安全的。但是,请注意,修改现有键的值可能会更改其哈希值,从而可能影响其在字典中的位置。
以上是在 Python 中使用“iteritems()”迭代时可以安全地修改字典吗?的详细内容。更多信息请关注PHP中文网其他相关文章!