Нужно выводить рейтинг таксиста по убыванию средней оценки таксиста В случае совпадения средних оценок расположить таксистов нужно отсортировать имена таксистов по алфавиту , у меня в коде стоит
чтоб отсортировать рейтинг таксистов по убыванию, но при этом он сортирует рейтинг по убыванию и алфавит снизу вверх можно как-то сделать чтоб reverse был только для средней оценки таксиста?
вот задание:
Рейтинг таксистов
Руководитель таксопарка хочет увидеть отчет по всем таксистам, где нужно указать имя таксиста и его среднюю оценку. Информацию в отчете нужно расположить по убыванию средней оценки таксиста.
После каждого успешно выполненного заказа, клиент выставляет таксисту оценку - целое число от 1 до 5.
Входные данные
Программа будет принимать строки, в которых сперва указывается имя таксиста, а затем через запятую с пробелом его оценка за заказ.
Строка “конец” является последней строкой и означает окончание ввода
Выходные данные
Нужно расположить таксистов в порядке убывания их средней оценке и вывести имя каждого таксиста и его среднюю оценку в отдельной строке. В случае совпадения средних оценок расположить таксистов нужно отсортировать имена таксистов по алфавиту
Sample Input 1:Джек, 2
Джек, 3
Билл, 5
Билл, 4
Билл, 4
Билл, 3
конец
Sample Output 1:Билл 4.0
Джек 2.5
Sample Input 2:Зина, 5
Зина, 3
Гермиона, 4
Гермиона, 4
конец
Sample Output 2:Гермиона 4.0
Зина 4.0
Мой код:
d ={}
while True:
x = input().split(',')
if x[0] == 'конец':
break
d.setdefault(x[0], []).append(int(x[1]))
[print(k, sum(v) / len(v)) for k,v in sorted(d.items(), key=lambda x: (sum(x[1])/len(x[1]), x[0]), reverse=True)]
Отредактировано Meacronacer (Авг. 28, 2021 19:20:33)