1

このスニペットを実行しました:

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:
    for f in i:
        print i[f]

出力が次の理由がわかりません:

[88.0, 40.0, 94.0]
[75.0, 90.0]
Lloyd
[90.0, 97.0, 75.0, 92.0]
[82.0, 83.0, 91.0]
[89.0, 97.0]
Alice
[100.0, 92.0, 98.0, 100.0]
[0.0, 75.0, 78.0]
[100.0, 100.0]
Tyler
[0.0, 87.0, 75.0, 22.0]

なぜそうなるのですか?そのためのドキュメントはどこにありますか? 誰かが出力のロジックについて簡単に説明してもらえますか?

4

3 に答える 3

2

これは、変更されたループで簡単に修正できます。

for student in students:
    for key in ["name", "homework", "quizzes", "tests"]:
        print student[key]

ここでは、namedtuples の方が適している可能性があります。

from collections import namedtuple
Student = namedtuple('Student', ["name", "homework", "quizzes", "tests"])

students = [
    Student(name="Lloyd",
            homework=[90.0, 97.0, 75.0, 92.0],
            quizzes=[ 88.0, 40.0, 94.0],
            tests=[75.0, 90.0])
    Student(name="Alice",
            homework=[100.0, 92.0, 98.0, 100.0],
            quizzes=[82.0, 83.0, 91.0],
            tests=[89.0, 97.0])
    Student(name="Tyler",
            homework=[0.0, 87.0, 75.0, 22.0],
            quizzes=[0.0, 75.0, 78.0],
            tests=[100.0, 100.0])
]
于 2013-07-13T10:06:14.707 に答える