Найти - Пользователи
Полная версия: Проблема с сортировкой
Начало » Python для новичков » Проблема с сортировкой
1
Meacronacer
Нужно выводить рейтинг таксиста по убыванию средней оценки таксиста В случае совпадения средних оценок расположить таксистов нужно отсортировать имена таксистов по алфавиту , у меня в коде стоит
 reverse=True
чтоб отсортировать рейтинг таксистов по убыванию, но при этом он сортирует рейтинг по убыванию и алфавит снизу вверх можно как-то сделать чтоб 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)]


py.user.next
  
>>> dct = {
...     'Билл': 4.0,
...     'Джим': 2.5,
...     'Джек': 2.5
... }
>>> 
>>> dct
{'Билл': 4.0, 'Джим': 2.5, 'Джек': 2.5}
>>> 
>>> out = dict(sorted(dct.items(), key=lambda i: (i[1], i[0])))
>>> out
{'Джек': 2.5, 'Джим': 2.5, 'Билл': 4.0}
>>>
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB