Python 3:字典中的列表,列表索引超出范围

Python 3:字典中的列表,列表索引超出范围,python,list,dictionary,indexing,Python,List,Dictionary,Indexing,我创建了一个字典,其中的条目如下所示: new_dict {0: ['p1', 'R', 'p2', 'S'], 1: ['p3', 'R', 'p4', 'P'], 2: ['p5', 'R', 'p6', 'S'], 3: ['p7', 'R', 'p8', 'R'], 4: ['p9', 'P', 'p10', 'S'], 5: ['p11', 'R', 'p12', 'S'], 6: ['p13', 'S', 'p14', 'S']} 从这里,我试图检查列表中的元素是否在我下面

我创建了一个字典,其中的条目如下所示:

new_dict
{0: ['p1', 'R', 'p2', 'S'], 1: ['p3', 'R', 'p4', 'P'], 2: ['p5', 'R', 'p6', 'S'], 3:   ['p7', 'R', 'p8', 'R'], 4: ['p9', 'P', 'p10', 'S'], 5: ['p11', 'R', 'p12', 'S'], 6: ['p13', 'S', 'p14', 'S']}  
从这里,我试图检查列表中的元素是否在我下面的列表中
移动
。例如,在new_dict[0]中,我想检查
中的第一个元素和第三个元素是否移动,如果不移动,则引发类异常。(这是一段代码。)

class NoStrategyError(异常):通过
j=0
而j
现在问题来了,当我运行这个时,我得到了以下错误:

如果新词[j][1+4*i]不在移动中或新词[j][3+4*i]不在移动中:
索引器:列表索引超出范围

这是什么意思


有没有更好的方法来编写内部
while循环
?并将其改为循环的
?类似于,
对于新词[j]

注意,在嵌套循环的第一次迭代中,我们看到以下值都在移动中:

>>>new_dict[0][1], new_dict[0][3] 
('R', 'S')
但是,在嵌套循环的第二次迭代中,您试图计算字典中未包含的术语:

>>>new_dict[1][5], new_dict[1][7]
IndexError: list index out of range
请注意,new_dict[1]只有4个元素:

>>>new_dict[1]
['p3', 'R', 'p4', 'P']
因此,您只能引用new_dict[1][0]、new_dict[1][1]、new_dict[1][2]、new_dict[1][3]:

>>>new_dict[1][0],new_dict[1][1],new_dict[1][2],new_dict[1][3]
('p3', 'R', 'p4', 'P')

您的列表最多有4个元素,但
1+4*i
从1到13。我刚刚意识到了这一点。我不需要内部
while循环
。呸!还有,你为什么要用连续整数键的字典来代替列表呢?这些键代表了第n个游戏。但事实上,这也是因为我必须将一个扁平的列表重新组合为四个。我不知道不使用字典怎么做。可能会有帮助:
>>>new_dict[1][0],new_dict[1][1],new_dict[1][2],new_dict[1][3]
('p3', 'R', 'p4', 'P')