python - 如果先验条件为真,则从嵌套字典中打印一个值
问题描述
这里的目标是打印出所有平均作业分数超过 2.0 的学生的学生 ID。现在,当我运行代码时,它只会为每个平均超过 2.0 的学生打印 False。我错过了什么?我试过重新安排订单无济于事。此外,在这里更改字典的格式不是一个选项。
编辑 - 好的第一个问题已经解决,我已经更新了代码。现在,如何将学生 ID 的最终输出放入列表中?我尝试定义标识,然后以列表形式打印,但这只是返回多个单独的列表,而不是一个列表中的所有结果。
students = {"student_1": {"id":12,"Assignments":[("Assignment_1",3),("Assignment_2", 4), ("Assignment_3", 2)]},
"student_2" :{"id":13,"Assignments":[("Assignment_1",2),("Assignment_2", 4), ("Assignment_3", 2)]},
"student_3" :{"id":14,"Assignments":[("Assignment_1",0),("Assignment_2", 1), ("Assignment_3", 1)]}}
环形:
for student in students.values():
scores = [score for (assignment, score) in student["Assignments"]]
identify = int(student["id"])
if sum(scores)/len(scores) >=2.0:
print([identify])
解决方案
这行代码print("id" in students.values())
打印布尔值,因为您正在测试是否students.values()
包含“id”。它返回布尔值,并且由于students.values
不包含“id”,因此打印为 false。您需要将该行代码更改print(student['id'])
为以打印“id”。
推荐阅读
- python - 如何从 Keras 模型中获取数据以进行可视化?
- json - DataTables 插件无法读取来自本地存储的 JSON 数据
- python - 如何在函数 Python 中调用类
- javascript - 无法将事件从 javascript 分派到组件(离子)
- javascript - 如何使用单选按钮和切换大小写使用 JavaScript 更改 img?
- c++ - constexpr 运算符 new
- php - 为什么我会得到带有 INSERT INTO VALUES 的 #1064?
- python - python REST服务器PUT不更新值
- mysql - 在同一张表中 LEFT JOIN 11 次
- mysql - 根据其他左连接计算左连接