@savickii2002
Новичок, люблю python

Как правильно отсортировать кортеж из 2 элементов в лексиграфическсом порядке?

Задача была считать строки и найти слова, которые чаще всего встречаются в тексте. Слова и их количество я нашёл. Теперь у меня есть список кортежей где 0 элемент - это количество слов, 1 элемент - само слово. Как ни пытался отсортировать, не сходится с ответом.
5f8425d10f130676984230.png

Вот мой код:
N = int(input())

r = {}
for i in range(N):
    s = input().split()
    for j in s:
        r.setdefault(j, 0)
        r[j] += 1

res = [(v, k) for k, v in r.items()]

print('\n'.join(map(lambda x: x[1], sorted(res, reverse=True))))


Что я делаю неправильно ?
  • Вопрос задан
  • 71 просмотр
Решения вопроса 1
aRegius
@aRegius
Python Enthusiast
data = sorted(data, key=lambda item: (-item[0], item[1]))
print('\n'.join(word for count, word in data))
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
У sorted есть атрибут key, в котором можно указать ключи сортировки
Попробуй так:
print('\n'.join(map(lambda x: x[1], sorted(res, reverse=True, key=lambda x: x[1]))))
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
deeplay Новосибирск
от 130 000 ₽
от 130 000 ₽
Enjoy PRO Санкт-Петербург
от 140 000 до 180 000 ₽
20 окт. 2020, в 22:57
5000 руб./за проект
20 окт. 2020, в 21:37
300000 руб./за проект
20 окт. 2020, в 21:18
500 руб./за проект