Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 28, 2021 19:13:08

Meacronacer
Зарегистрирован: 2021-07-21
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с сортировкой

Нужно выводить рейтинг таксиста по убыванию средней оценки таксиста В случае совпадения средних оценок расположить таксистов нужно отсортировать имена таксистов по алфавиту , у меня в коде стоит

 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)]


Отредактировано Meacronacer (Авг. 28, 2021 19:20:33)

Офлайн

#2 Авг. 29, 2021 00:37:19

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9873
Репутация: +  853  -
Профиль   Отправить e-mail  

Проблема с сортировкой

  
>>> 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}
>>>



Отредактировано py.user.next (Авг. 29, 2021 05:06:13)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version