我试图从字典中的列表中获取价值?不确定如何访问它?但这就是我的所作所为&我收到错误了 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,&我还有更多疑问如果有人能提供帮助,那将是学习方面的帮助。提前谢谢。
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'])
如果有人能够清楚我对上述3个问题的怀疑。
答案 0 :(得分: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]
},
}
现在,您可以遍历此字典并访问每位学生的各种密钥:
for student_data in students.values():
print student_data['quizzes']
请注意,此处使用.values()
循环只是 students
字典的值,因为我们不使用此处的密钥。
使用相同的循环来计算平均值,但请记住,当遇到return
语句时,函数结束。您始终可以通过返回元组来返回函数中的多个值:
def average(student):
homework = ...
quizzes = ...
tests = ....
return (homework, quizzes, tests)
例如,或者你可以使用字典。
答案 1 :(得分:2)
>>> sum(lloyd['homework'])
354.0
def findsum(x):
return sum([sum(x['homework']),sum(x['quizzes']),sum(x['tests'])])
>>> findsum(lloyd)
741.0
>>> len(lloyd['homework'])
4
答案 2 :(得分:0)
此代码:
for i in alice:
print i['quizzes']
获取字典Alice并对其键进行迭代,键是字符串。我想你想要的是:
print alice['quizzes']
答案 3 :(得分:0)
更好的是,你使用迭代(键和值)。它更普遍。尝试一下,它有效:
values_of_alice=[]
for key, value in students.iteritems():
if key == 'alice':
values_of_alice.append(value)
for key2, value2 in values_of_alice[0].iteritems():
if key2 == 'quizzes':
print value2