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

如何通过双层for循环创建包含完整结果的嵌套字典?

生成包含所有参数组合得分的嵌套字典

问题原因

你的代码中,每次执行thisdict1.update({i1:{b1:m2}})时,都会将i1对应的整个字典替换为仅包含当前b1的新字典,导致每个i1最终只保留最后一次循环的b1得分。

修正方案

需要为每个i1维护一个独立的子字典,在循环中不断向子字典添加b1与对应得分的键值对,而非覆盖整个子字典。

方案一:提前初始化子字典

thisdict1 = {}

for i1 in range(1, 5):
    # 为当前min_samples值初始化空的子字典
    thisdict1[i1] = {}
    for b1 in range(1, 6):
        ransac2 = RANSACRegressor(base_estimator=LinearRegression(), min_samples=i1, max_trials=b1)
        ransac2.fit(X_test, y_test)
        m2 = ransac2.score(X_test, y_test)
        # 向子字典中添加max_trials对应的得分
        thisdict1[i1][b1] = m2 

print(thisdict1)

方案二:使用setdefault自动初始化子字典

如果不想提前初始化子字典,可以用dict.setdefault()方法,自动处理i1不存在的情况:

thisdict1 = {}

for i1 in range(1, 5):
    for b1 in range(1, 6):
        ransac2 = RANSACRegressor(base_estimator=LinearRegression(), min_samples=i1, max_trials=b1)
        ransac2.fit(X_test, y_test)
        m2 = ransac2.score(X_test, y_test)
        # 确保i1对应的子字典存在,再添加键值对
        thisdict1.setdefault(i1, {})[b1] = m2 

print(thisdict1)

输出效果

修正后会生成包含所有min_samples(1-4)与max_trials(1-5)组合得分的嵌套字典,格式与你期望的示例一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 21:30:58