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

Python嵌套for循环向字典追加键值不覆盖旧条目问题排查

问题修复方案

故障原因

it.chain()返回的是一次性迭代器,你定义的ROIs在第一次遍历完Subject1的所有ROI后就已经耗尽为空。外层循环进入Subject2时,内层for ROI in ROIs拿不到任何元素,对应计算和写入字典的逻辑完全不会执行,最终字典里只会保留Subject1的结果。

修复方法

将ROIs转为支持重复遍历的列表即可,其余逻辑无需修改。

修正后完整代码:

import numpy as np
import scipy as sp
import itertools as it
from scipy import stats


Ideal_frequency = np.loadtxt("/volumes/... .1D")

# 迭代器转列表,支持多次循环遍历
ROIs = list(it.chain(range(1,181), range(1001,1181))) # ROIs 1-180 and 1001-1180

Subjects = ["Subject1", "Subject2"]
PLE_dict = {}

for Subject in Subjects:
    for ROI in ROIs:
        Data = np.loadtxt(f"/volumes/seagate/{Subject}/G360_{ROI}_{Subject}.1D")
        PLE = sp.stats.linregress(np.log(Ideal_frequency), np.log(Data))
        
        if ROI not in PLE_dict:
            PLE_dict[ROI] = [PLE[0]]
        else:
            PLE_dict[ROI].append(PLE[0])

print(PLE_dict)   

预期结果

运行后每个ROI对应的列表长度为2,依次存储Subject1、Subject2的PLE[0]计算结果,输出格式示例:

{1: [-0.9924575013746104, -0.9812345xxxx],
 2: [-0.8905778114042852, -0.9023456xxxx],
 3: [-1.0143346946069933, -1.0076543xxxx],
 ...
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 09:42:25