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

Python遍历字典添加Country键时报RuntimeError错误该如何解决?

错误原因

你遇到的RuntimeError: dictionary changed size during iteration报错,核心原因是Python禁止在遍历原生字典的过程中修改字典的大小:字典迭代器是基于遍历开始时的字典结构生成的,遍历过程中如果执行新增、删除键的操作,会导致迭代器的遍历逻辑和实际字典结构不匹配,因此Python直接抛出该错误终止运行。
你当前代码就是在for keys in dictionary_of_spliting遍历字典本身的过程中,执行dictionary_of_spliting["Country"] = "France"新增键的操作,直接触发了该规则。另外你代码中未定义变量var,即使不触发字典报错,运行也会抛出NameError。

实现方案

方案1:无需遍历字典的最优写法

如果你的需求只是给字典加固定键值对,不需要遍历字典做额外判断,完全可以删除冗余的for循环,直接赋值即可:

dictionary_of_spliting = {"Food":"Honey",
                          "Trash1":"some",
                          "Trash2":"some",
                          "Trash3":"your",
                          "Thing":"resorces"}
var = 10 # 自行根据业务需求给var赋值
if var <= 12:
    dictionary_of_spliting["Country"] = "France"

方案2:确需遍历字典的兼容写法

如果业务逻辑要求必须先遍历字典做其他判断,遍历的时候不要直接遍历字典本身,遍历字典键的静态列表即可,遍历过程中修改原字典不会触发报错:

dictionary_of_spliting = {"Food":"Honey",
                          "Trash1":"some",
                          "Trash2":"some",
                          "Trash3":"your",
                          "Thing":"resorces"}
var = 10
# 把字典的键转成固定列表,遍历列表不会受原字典修改影响
for key in list(dictionary_of_spliting.keys()):
    # 此处可添加你需要的遍历处理逻辑
    if var <= 12:
        dictionary_of_spliting["Country"] = "France"

注意:上述dictionary_of_spliting["Country"] = "France"赋值不需要放在循环内重复执行,建议放到循环外减少无效操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 23:57:03