как сортировать по значению кортежа в словаре?
Я использовал лямбду для сортировки Я пытался сортировать по имени в алфавитном порядке и по классу.поэтому я хочу получить два результата отдельно.
scale = {'A+': 4.3, 'A': 4.0, 'A-': 3.7,
'B+': 3.3, 'B': 3.0, 'B-': 2.7,
'C+': 2.3, 'C': 2.0, 'C-': 1.7,
'D+': 1.3, 'D': 1.0, 'D-': 0.7,
'F' : 0.0}
subject = {'math': {('Tom', 'B'), ('Kevin','D')},
'History': {('Kate', 'A+'),('Eric','C'),('Hannah','F')},
'English': {('Eli', 'B-')}}`
from collections import defaultdict
def pass(subject, mingrade):
output = defaultdict(list)
for subject_name,subject_grade in subject.items():
for student,grade in subject_grade:
if scale[grade]>=mingrade:
output[subject_name]+=[student]
return output
Я устал, как этот код сортировать по классу, но он получает TypeError: объект 'set' не поддерживает индексирование for k,v in sorted(db.items(), key =lambda x:x[1][1]):
, однако for k,v in sorted(db.items(), key =lambda x:x[1])
неизмените что-нибудь, но не получите ошибку.