You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python迭代修改字典键时报dictionary keys changed错误怎么解决

报错原因

Python 3 中dict.keys()返回的是字典的动态视图对象,会和原字典实时关联,迭代过程中如果修改字典的键(新增、删除键)就会触发RuntimeError: dictionary keys changed during iteration。你在循环中同时执行删除旧键、添加新键的操作,刚好触发了这个限制。

解决方案

方法1:迭代静态键列表

只需把test.keys()转换为列表,即可生成迭代开始前的静态键集合,迭代过程不受字典修改影响,可正常完成键名修改:

for key in list(test.keys()):
    test[str(float(key)/1000)] = test.pop(key)

方法2:生成新字典(更推荐)

直接用字典推导式生成符合要求的新字典,代码更简洁,也避免了迭代时修改原字典的问题:

# 生成新字典,不改动原test字典
new_test = {str(float(key)/1000): val for key, val in test.items()}
# 如果需要覆盖原变量,可直接赋值:test = new_test
注意事项
  • 如果多个原毫秒时间戳除以1000后结果相同,会出现键覆盖,仅保留最后处理的对应值,使用前请确认你的时间戳数据不存在这类冲突。

内容的提问来源于stack exchange,提问作者bbartling

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 18:18:03