0

私はcodeacademyでpythonを学ぼうとしています。宿題は(各生徒に)3つの辞書を作成し、3つの辞書のリストを作成することでした。次に、リスト内のすべてのデータを印刷することになっています。

辞書自体に使用したのと同じ方法で値を呼び出そうとしましたが (lloyd[values])、値が o_O で定義されていないと表示されます。また、「名前を印刷」しようとしましたが、値の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 names in students:
     print lloyd[values]
4

6 に答える 6

6

各学生のすべての情報を印刷したい場合は、学生と辞書に保存されている値をループする必要があります。

students = [lloyd, alice, tyler]
for student in students:
    for value in student:
        print value, "is", student[value]

ただし、辞書は順序付けされていないため、値の順序が希望どおりにならない可能性があることに注意してください。この場合、値の名前を文字列としてキーとして使用して、それらを個別に出力します。

for student in students:
    print "Name is", student["name"]
    print "Homework is", student["homework"]
    # same for 'quizzes' and 'tests'

最後に、pprint生徒用辞書を「きれいに印刷」するためにモジュールを使用することもできます。

import pprint
for student in students:
    pprint.pprint(student)
于 2013-07-19T21:46:22.637 に答える
2

可読性とスケーラビリティのために、代わりに namedtuple を使用することをお勧めします。

from collections import namedtuple

Student = namedtuple('Student', ['name', 'hw', 'quiz', 'test'])

Alice = Student('Alice', herHWLst, herQuizLst, herTestLst)
Ben = Student('Ben', hisHWLst, hisQuizLst, hisTestLst)

students = [Alice, Ben]

for student in students:
    print student.name, student.hw[0], student.quiz[1], student.test[2] 
    #whatever value you want

本当に大量の辞書を作成したい場合は、上記のコードで次のように読むことができます。

for student in students:
    name = student['name']
    homeworkLst = student['homework']
    # get more values from dict if you want
    print name, homeworkLst

Python では辞書へのアクセスは非常に高速ですが、辞書の作成は高速で効率的ではない場合があります。この場合、namedtuple はより実用的です。

于 2013-07-19T22:29:03.740 に答える
2

辞書の値を単純に出力できます。

for names in students:
   print names #names are the dictionaries

名前だけを印刷したい場合は、次のnameキーを使用します。

for student in students:
    print student['name']
于 2013-07-19T21:37:02.207 に答える
0

これが私が彼らに受け入れさせたものです。

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

これも機能しますが、受け入れられません。

for name in students:
    print name
于 2016-09-04T17:22:38.867 に答える
0

これが私がcodeacademyで解決した方法です。誰かがこれが学生の学生に役立つことを願っています:

print student['name']
print student['homework']
print student['quizzes']
print student['tests']
于 2016-04-01T18:02:26.873 に答える
0

辞書studentsのリストも同様です。あなたはそれから欲しい

for student in students:
    print student['name']

また、辞書内のキーを呼び出したい場合は、キー名を文字列として引用符で囲む必要がありますalice[homework]。Pythonhomeworkは変数と見なすため、機能しません。alice['homework']代わりに必要です。

したがって、すべての情報をうまく見るには、次のようにします。

for student in students:
    for field in student.keys():
        print "{}: {}".format(field, student[field])

たとえば、最初に名前を印刷したり、各新入生の間に新しい行を挿入したりするなど、フォーマットをより適切にするためにいろいろ試してみることができます。

于 2013-07-19T21:36:09.733 に答える