Это очень хорошо! Проблема в вашей последней строке. Вы проверяете:
"id" in students.values())
Вот список student.values()
:
["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)]}]
Давайте на секунду оценим, что делает этот оператор. Для упрощения мы будем использовать:
a = 5
b = [1, 2, 3, 4, 5]
print(a in b)
Этот код также можно записать
for x in b:
if a == x:
print(True)
print(False)
Прямо сейчас вы проверяете, есть ли строка "id"
в спискевложенные словари. Это не! Вместо этого вы хотите получить доступ к клавише "id"
в своем словаре student
:
student["id"]
В целом:
print(student["id"])
А затем полный код:
for student in students.values():
scores = [score for (assignment, score) in student["Assignments"]]
if sum(scores)/len(scores) >=2.0:
print(student["id"])