{'Adam': {('Cleaning',4), ('Tutoring',2), ('Baking',1)},
'Betty': {('Gardening',2), ('Tutoring',1), ('Cleaning',3)},
'Charles': {('Plumbing',2), ('Cleaning',5)},
'Diane': {('Laundry',2), ('Cleaning',4), ('Gardening',3)}}
def who(db : {str:{(str,int)}}, job: str, min_skill : int) -> [(str,int)]:
result = []
if type(min_skill) != int:
raise AssertionError
if min_skill < 0 or min_skill > 5:
raise AssertionError
for key,value in db.items():
for item in value:
if item[0] == job and item[1] >= min_skill:
result.append((key,item[1]))
return sorted(result,key = lambda x: x[1],reverse = True)
функция who, которая берет базу данных, задание (str), минимальный уровень навыка (int) в качестве аргументов; он возвращает список из 2-х кортежей: лица и их уровень навыка, отсортированные по уменьшению уровня навыка. если у двух людей одинаковый уровень мастерства, они должны появляться в алфавитном порядке.как отсортировать список двумя разными ключами?
моя функция способна сортировать список с минимальным уровнем мастерства (int), но не может сортировать список по алфавиту.
я получил следующее сообщение об ошибке:
*Error: who(db,'Cleaning' ,4) -> [('Charles', 5), ('Diane', 4), ('Adam', 4)] but should -> [('Charles', 5), ('Adam', 4), ('Diane', 4)]
может кто-то помочь мне исправить мой код, чтобы отсортировать как по минимальному уровню квалификации (INT) и в алфавитном порядке.
Возможный дубликат http://stackoverflow.com/questions/4233476/sort-a-list-by-multiple-attributes – jackarms