我有这段代码(摘自 verbatim ,摘自Kyran Dale的“基于JavaScript的Python数据可视化”第二章中的第二个示例)
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_student_data.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总和数组”之类的东西,但是没有什么乐趣。
我将很感激:
答案 0 :(得分:3)
您的输入数据不是单个rules.List
,而是request.resource.data.keys().hasOnly(['EmailAddress', 'CostPrice']) == true
个dict
中的一个。因此,您将不得不对其进行迭代并分别对每个list
进行操作:
dict
或者,您可以按原样保留函数并在循环中调用它:
dict