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

标签 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']

我正在学习 python,我还有一些疑问如果有人能提供帮助,那将是 gr8 对学习的帮助。在此先感谢。

1) 如何访问键 'homework' 并在列表中求和它的值?

2) 如何访问字典 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'])

如果有人可以消除我对上述 3 个问题的疑虑。

最佳答案

您正在遍历 alice,而不是值。你的 key 是字符串。即使您循环遍历这些值,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]
    },
}

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

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

注意这里使用 .values() 来循环 just students 字典的值,因为我们不使用 key 在这里。

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

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

例如,您也可以使用字典。

关于python - 字符串索引必须是整数而不是 str 字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18015385/

相关文章:

python - 以视觉可读的方式将张量写入文件

python - 来自 NLTK、Gensim、Scikit Learn 的 API 调用

python - 如何使用 PRAW 和 python 从特定用户检索 reddit 帖子数据?

python - 在 lambda 中执行 if

python - TextCtrl 的 wxPython C++ 部分被删除

python - 如何将 ndarray 转换为结构化数组?

Python PPTX table.cell 颜色

Python:.upper 后打印值

python - 为什么 map(print, a_list) 不起作用?

python - 如何递归探索Python嵌套字典?