lxstvayne
@lxstvayne
Люблю 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))))


Что я делаю неправильно ?
  • Вопрос задан
  • 76 просмотров
Решения вопроса 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]))))
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы