@Vadim_Zaripov

Python. В чем ошибка в коде (задача "частотный анализ")?

Имеется следующая задача:

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

Указание. После того, как вы создадите словарь всех слов, вам захочется отсортировать его по частоте встречаемости слова. Желаемого можно добиться, если создать список, элементами которого будут кортежи из двух элементов: частота встречаемости слова и само слово. Например, [(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])


Подозреваю, что ошибка в вводе текста. Подскажите как исправить?
  • Вопрос задан
  • 5384 просмотра
Пригласить эксперта
Ответы на вопрос 2
@sashnat
Код скопирован, видимо, у меня, даже комментарий мой остался :)))) но был немного изменен
мое решение было таким: https://github.com/sashnat/python-codes.-part-5/bl...
Ответ написан
adugin
@adugin Куратор тега Python
from collections import Counter

text = """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"""

c = Counter(sorted(text.split()))
print(*sorted(c.keys(), key=c.get, reverse=True), sep='\n')
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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