Python-现有词典列表

Python-现有词典列表,python,list,dictionary,Python,List,Dictionary,我对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]

我对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
提前谢谢

编辑:


如果您想要一个简单的列表:

>>> 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

如果您想要一个简单的列表:

>>> 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

该错误表示您正在错误地遍历列表。尝试如下迭代:

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)

该错误表示您正在错误地遍历列表。尝试如下迭代:

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)

您似乎忘记了包含代码。只是一条例外信息对我们来说是毫无用处的。。那会有帮助的。很抱歉我现在已经编辑过了。不,仍然没有实际的代码会引发这样的异常。您编写的代码似乎正确:在哪一点引发异常?我添加了使用列表的方法。它在get_class_average中抛出错误。您似乎忘记了包含代码。只是一条例外信息对我们来说是毫无用处的。。那会有帮助的。很抱歉我现在已经编辑过了。不,仍然没有实际的代码会引发这样的异常。您编写的代码似乎正确:在哪一点引发异常?我添加了使用列表的方法。它在get_class_average中抛出了错误。不要使用名称
sum
,除非您引用的是内置函数。这一点很好。我已经重命名了变量。你已经得到了我的
+1
,因为我发布了几乎与我完全相同的答案(现在删除以避免重复),但我认为生成器表达式比你的最终版本中的
map
更好。与
map
不同,也可以安全地移植到Python 3<代码>返回和(为学生列表中的学生获取平均值(学生)/len(学生列表)不要使用名称
sum
,除非您指的是内置函数。这一点很好。我已经重命名了变量。你已经得到了我的
+1
,因为我发布了几乎与我完全相同的答案(现在删除以避免重复),但我认为生成器表达式比你的最终版本中的
map
更好。与
map
不同,也可以安全地移植到Python 3<代码>返回总和(为学生列表中的学生获取平均值(学生)/len(学生列表)