如何从字典列表中调用字典值?

use*_*390 0 python dictionary list

我正在尝试用codeacademy学习python.作业是制作3个词典(每个学生),然后列出3个词典.那么,我应该打印出列表中的所有数据.

我试图以与我自己用于字典的方式相同的方式调出值(lloyd [values]),但之后它表示值未定义为o_O.我也尝试'打印名称'但是错误信息是我没有打印出其中一个值.

我非常感谢你的帮助.

 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 names in students:
     print lloyd[values]
Run Code Online (Sandbox Code Playgroud)

tob*_*s_k 5

如果要打印每个学生的所有信息,您必须循环学生和存储在词典中的值:

students = [lloyd, alice, tyler]
for student in students:
    for value in student:
        print value, "is", student[value]
Run Code Online (Sandbox Code Playgroud)

但请注意,字典不是有序的,因此值的顺序可能与您不希望的方式相同.在这种情况下,单独打印它们,使用值的名称作为键作为键:

for student in students:
    print "Name is", student["name"]
    print "Homework is", student["homework"]
    # same for 'quizzes' and 'tests'
Run Code Online (Sandbox Code Playgroud)

最后,您还可以使用该pprint模块"漂亮地打印"学生词典:

import pprint
for student in students:
    pprint.pprint(student)
Run Code Online (Sandbox Code Playgroud)