Python:For循环中的循环?

时间:2014-04-26 08:19:00

标签: python variables for-loop dictionary

我刚刚学习了编程和python的基础知识,作为“挑战”的一部分,我必须使用for循环来打印每个学生的数据。我需要能够只显示学生的名字和他们的分数,而不仅仅是显示字典:

  1. 打印学生的姓名
  2. 打印学生的作业
  3. 打印学生的测验
  4. 打印学生的考试
  5. 打印学生的作业打印     学生的测验打印出学生的考试

    但我目前无法通过变量访问字典的值(在这种情况下,它是“学生”)。我是否必须在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
    

    请一步一步地通过好的代码指导我(为了让我理解它),我们将非常感谢任何答案。

6 个答案:

答案 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);

DEMO