继续索引超出范围错误

时间:2013-12-03 05:11:21

标签: python indexing

这是我的代码: * Student_IDs是字典

def avg_GPAwork(work_choice):

    work = []
    work = list((Student_IDs.values()))
    print(work)

    for hours in range(len(work)):
        student_hours = work([hours][6])
        print(student_hours)

以下是工作:

[
    ['Childs, Julia', '9939456', '12/12/1993', 'Computer Science', '3.89', '8'],
    ['Gaga, Lady', '7733469', '10/10/1980', 'Computer Science', '1.20', '40'],
    ['Joe, Billy', '80978632', '01/10/1992', 'Undeclared', '2.4', '25'],
    ['Armstrong, Lance', '0034728', '07/21/1993', 'Computer Science', '3.47', '10'],
    ['Cronkite, Walter', '4357349', '10/02/1992', 'Math', '3.21', '0'],
    ['Williams, Serena', '8453392', '02/14/1994', 'Math', '3.09', '5'],
    ['Harmond, Josh', '30145692', '12/03/1994', 'Biology', '3.9', '0'],
    ['Pawlakos, Eric', '1234567', '05/23/1993', 'Statistics', '3.8', '8']
]

我继续得到索引超出范围错误。我做错了什么/我该如何解决?

1 个答案:

答案 0 :(得分:2)

work([hours][6])

我不知道你的想法是什么,但它没有做你想的。您可能想要以下内容:

work[hours][5]

第一个问题是你的括号导致表达式被解析为“调用对象work就像它是一个函数一样。该参数应该通过创建一个单元素列表来确定[hours] ,然后将元素放在位置6“。

第二个问题是索引从0开始,所以如果你想要第6个元素,那就是索引5。

注意:range-len迭代几乎不是一个好主意。如果要迭代列表的元素,请直接执行:

for item in work:
    student_hours = item[5]
    print(student_hours)

或者更好的是,废弃函数的前半部分并直接迭代Student_IDs.values()

for item in Student_IDs.values():
    student_hours = item[5]
    print(student_hours)