我有这段代码(取自Kyran Dale在JavaScript上使用Python进行数据可视化的第2章中的第二个示例)
student_data = [
{'name': 'Bob', 'id':0, 'scores':[68, 75, 56, 81]},
{'name': 'Alice', 'id':1, 'scores':[75, 90, 64, 88]},
{'name': 'Carol', 'id':2, 'scores':[59, 74, 71, 68]},
{'name': 'Dan', 'id':3, 'scores':[64, 58, 53, 62]},
]
def process_student_data(sdata, pass_threshold = 60, merit_threshold = 75):
av = sum(sdata['scores'])/float(len(sdata['scores'])) # <<== PROBLEM LINE!!
sdata ['average'] = av
if av > merit_threshold:
sdata['assessment'] = 'Passed with merit'
elif av > pass_threshold:
sdata['assessment'] = 'Passed'
else:
sdata['assessment'] = 'Failed'
print("%s's (id: %d) final assessment is: %s" %(sdata['name'], sdata['id'], sdata['assessment'].upper()))
if __name__ == '__main__':
process_student_data(student_data)
但是关于运行“python do\u”的学生_数据.py“(我的文件名)我得到的错误是:
File "do_student_data.py", line 9, in process_student_data
print(sdata['scores'])
TypeError: list indices must be integers or slices, not str
我以前编程过(C,Delphi,Java),我可以看到解释器在说什么,但我就是不知道如何修复它。我在google上搜索过“Python sum array in list”和类似的东西,但没有乐趣。你知道吗
我将非常感谢:
您的输入数据不是一个
dict
,而是list
个dict
的list
。因此您必须对其进行迭代,并分别对每个dict
执行操作:或者,您可以保持函数的原样,并在循环中调用它:
相关问题 更多 >
编程相关推荐