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

2024-05-20 04:38:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我想从一份清单中获取价值?不确定如何访问它?但以下是我所做的&;我得到了一个错误 类型错误:字符串索引必须是整数,而不是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']

我正在学习python,我有几个问题,如果有人可以帮助将是一个gr8帮助学习。提前谢谢。

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'])

如果有人能澄清我对上述三个问题的怀疑。


Tags: namein列表forlenreturn错误tests
3条回答

您在alice上循环,而不是值。你的钥匙是弦。即使在值上循环,也无法通过'quizzes'索引alice中的任何值。你可以只打印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]
    },
}

现在您可以循环使用这个字典,并为每个学生访问不同的密钥:

for student_data in students.values():
    print student_data['quizzes']

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

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

def average(student):
    homework = ...
    quizzes = ...
    tests = ....
    return (homework, quizzes, tests)

或者你可以用字典。

问题1(如何访问“家庭作业”键并在列表中对其值求和?)

>>> sum(lloyd['homework'])
354.0

问题2家庭作业+测验+测验

def findsum(x):
    return sum([sum(x['homework']),sum(x['quizzes']),sum(x['tests'])])

>>> findsum(lloyd)
741.0

问题3)如何访问键“llyod”&get its len()of a list?说“家庭作业”

>>> len(lloyd['homework'])
4

此代码:

 for i in alice:
        print i['quizzes']

获取字典Alice并对其键(即字符串)进行迭代。我想你想要的是:

print alice['quizzes']

相关问题 更多 >