我是Python的新手,这只是不起作用。 我有这些词典:
lloyd = {
"name": "Lloyd",
"homework": [90.0, 97.0, 75.0, 92.0],
"quizzes": [88.0, 40.0, 94.0],
"tests": [75.0, 90.0]
}
alice = {
"name": "Alice",
"homework": [100.0, 92.0, 98.0, 100.0],
"quizzes": [82.0, 83.0, 91.0],
"tests": [89.0, 97.0]
}
tyler = {
"name": "Tyler",
"homework": [0.0, 87.0, 75.0, 22.0],
"quizzes": [0.0, 75.0, 78.0],
"tests": [100.0, 100.0]
}
我的清单:
students_list = [lloyd, tyler, alice]
我需要列出这些,这样我就可以计算出所有学生成绩的平均值。 我得到的错误是
TypeError: list indices must be integers, not unicode
提前致谢。
编辑:
def get_class_average(student_list):
student_one = get_average(student_list["lloyd"])
student_two = get_average(student_list["alice"])
student_three = get_average(student_list["tyler"])
return (student_one + student_two + student_three) /3
答案 0 :(得分:3)
错误意味着您错误地遍历列表。尝试迭代:
for student in students_list:
# perform calculation
在您的代码中使用它
def get_class_average(student_list):
total = 0
for student in students_list:
total += get_average(student)
return total / len(student_list)
如果您对使用更复杂的python感兴趣,请尝试使用map
和sum
方法:
def get_class_average(student_list):
return sum(map(get_average, student_list)) / len(student_list)
答案 1 :(得分:0)
如果你想要一个平面列表:
>>> ns = [n for N in lloyd.values() if isinstance(N, list) for n in N]
>>> ns
[88.0, 40.0, 94.0, 90.0, 97.0, 75.0, 92.0, 75.0, 90.0]
>>> sum(ns) / len(ns)
82.33333333333333