字符串索引必须是整数而不是str字典

Sim*_*4ya 2 python python-2.7

我试图从字典中的列表中获取价值?不确定如何访问它?但这就是我所做的和我得到的错误,因为 TypeError:字符串索引必须是整数,而不是str

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

for i in alice:
    print i['quizzes']
Run Code Online (Sandbox Code Playgroud)

我正在学习python,而且我还有更多的疑问如果有人可以提供帮助,那将是学习方面的帮助.提前谢谢.

1)如何访问关键'家庭作业'并将其值列入清单?

2)如何访问dict alice并总结其所有键的值?家庭作业+测验+带sum()函数的测试

3)如何访问密钥'llyod'并获取列表的len()?说'家庭作业'

这是我尝试过的,我也得到了同样的错误:

def average(x):
    for a in x: 
       return sum(a['homework']) / len(a['homework'])
       return sum(a['quizzes']) / len(a['quizzes'])
       return sum(a['tests']) / len(a['tests'])
Run Code Online (Sandbox Code Playgroud)

如果有人可以请清除我对上述3个问题的怀疑.

Mar*_*ers 7

您遍历了钥匙alice,而不是值.你的钥匙是字符串.即使您循环遍历值,也alice无法将索引中的任何值编入索引'quizzes'.你可以打印alice['quizzes'],但这可能不是你想要的开始.

您希望将所有命名字典放入一个"父"字典中:

students = {
    "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]
    },
}
Run Code Online (Sandbox Code Playgroud)

现在,您可以遍历字典并访问每个学生的各种键:

for student_data in students.values():
    print student_data['quizzes']
Run Code Online (Sandbox Code Playgroud)

注意.values()这里使用循环students字典的值,因为我们不使用这里的键.

使用相同的循环来计算平均值,但请记住,遇到语句时函数结束return.您始终可以通过返回元组从函数返回多个值:

def average(student):
    homework = ...
    quizzes = ...
    tests = ....
    return (homework, quizzes, tests)
Run Code Online (Sandbox Code Playgroud)

或者你可以使用字典.