Имеется следующая задача:
Дан текст. Выведите все слова, встречающиеся в тексте, по одному на каждую строку. Слова должны быть отсортированы по убыванию их количества появления в тексте, а при одинаковой частоте появления — в лексикографическом порядке.
Указание. После того, как вы создадите словарь всех слов, вам захочется отсортировать его по частоте встречаемости слова. Желаемого можно добиться, если создать список, элементами которого будут кортежи из двух элементов: частота встречаемости слова и само слово. Например, [(2, 'hi'), (1, 'what'), (3, 'is')]. Тогда стандартная сортировка будет сортировать список кортежей, при этом кортежи сравниваются по первому элементу, а если они равны — то по второму. Это почти то, что требуется в задаче.
Входные данные
Вводится текст.
Выходные данные
Выведите ответ на задачу.
Примеры
входные данные
hi
hi
what is your name
my name is bond
james bond
my name is damme
van damme
claude van damme
jean claude van damme
выходные данные
damme
is
name
van
bond
claude
hi
my
james
jean
what
your
У меня вот такое решение, но оно проходит только 4 из 22 тестов:
d = {}
a = input()
for x in a.splitlines():
for word in x.split():
d[word] = d.get(word, 0) + 1 # в словарь добавляется последнее значение суммы
for i in sorted(d.items(), key=lambda x-x[1],x[0])):
print(i[0])
Подозреваю, что ошибка в вводе текста. Подскажите как исправить?