我知道这个错误有很多线程,但我研究了很多,仍然无法理解 . 我设法将数据从(奇怪的格式化)json解析为python,如下所示:

data = ....all my json data

整个想法是我有6个块,每个72个试验 . 我想把它们分成三个列表 . 1和2块进入第一个列表,3和4进入第二个列表,5和6进入第三个列表 . json中的所有块都是7,这就是我从1开始for循环的原因 . 这是我将所有数据都归入上述变量之后的代码:

high_trials=[]
    medium_trials=[]
    low_trials=[]

for i in range(0,len(data)-1): #parse all the participant's experiment json objects

    blocks = data[i].get("json").get("blocks")  #parse each experiments "blocks" json object

    for j in range(1, len(blocks)-1):   #6 blocks (7 blocks expept block 0 which is the training block and it should be excluded)

        for k in range(0,71):     #72 trials each block
            if (j<=2):
                high_trials.append(blocks[j][k])  #gather all the HIGH contigency trials of this block
            elif (j<=4):
                medium_trials.append(blocks[j][k])  #gather all the MEDIUM contigency trials of this block
            else:
                low_trials.append(blocks[j][k]) #gather all the LOW contigency trials of this block

high_trials和medium_trials就像一个魅力 . 他们收集了我想要的所有试验 . 出于某种原因,在i = 5和j = 5且k = 65时出现此错误:

Traceback (most recent call last):
   File "C:\Users\user\Desktop\res-cog-exp.py", line 75285, in <module>
low_trials.append(blocks[j][k])
IndexError: list index out of range

我想知道这是否是我的巨大数据的问题 . 我找到了这些数据并且看起来是正确的,但是为什么错误是关于索引超出范围?这是一个清单吧?那么为什么其他两个名单有效呢?我的记忆有问题吗?我不这么认为 . Probabely这是逻辑问题吗?喜欢i,j和k索引?我想不出来 .

感谢大家的帮助 :)