我刚刚学习了编程和python的基础知识,作为“挑战”的一部分,我必须使用for循环来打印每个学生的数据。我需要能够只显示学生的名字和他们的分数,而不仅仅是显示字典:
但我目前无法通过变量访问字典的值(在这种情况下,它是“学生”)。我是否必须在for循环中使用for循环?
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 = [lloyd, alice, tyler]
for i in students:
print i[i] #<------ I have no idea what to do here
请一步一步地通过好的代码指导我(为了让我理解它),我们将非常感谢任何答案。
答案 0 :(得分:1)
您应该将i[i]
替换为i["name"]
。迭代students
时,每次迭代都会得到字典,实例值存储在i
中。
为了访问字典值,你需要使用key访问(dict是密钥,python中的值对);在您的情况下,您希望使用name
作为密钥进行访问。
答案 1 :(得分:1)
for d in students:
print d["name"],d["homework"],d["quizzes"],d["tests"]
答案 2 :(得分:1)
在你的循环中,我已经是学生了:
for i in students:
print i
{'quizzes': [88.0, 40.0, 94.0], 'tests': [75.0, 90.0], 'name': 'Lloyd', 'homework': [90.0, 97.0, 75.0, 92.0]}
然后,您可以显示如下所需的信息:
print i['name']
您需要阅读:https://docs.python.org/2/tutorial/datastructures.html
答案 3 :(得分:0)
好的,试试这个:
for i in students:
for j in i:
print "%s -> %s", % (j, i[j])
这是你在找什么?
答案 4 :(得分:0)
带注释的代码:
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 = [lloyd, alice, tyler]
for student in students:
print student # The dictionnary, so...
for j in student:
print student[j] # Print each value
答案 5 :(得分:0)
试试这个:
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 = [lloyd, alice, tyler]
for i in students:
total=0;
for s in i['quizzes']:
total=total+s;
print "Name: "+i['name']+" Score:"+str(total);