Предлагаю решить задачу вместе: без спешки, с объяснением каждой строки.
Задача
Дан текст. Посчитать, сколько раз встречается каждое слово, и вывести слова по убыванию частоты.
Решение
from collections import Counter
def word_count(text: str) -> list[tuple[str, int]]:
words = text.lower().split()
return Counter(words).most_common()
print(word_count("a b a c b a"))
Как это работает
Текст разбивается на слова, Counter подсчитывает вхождения за линейное время, а most_common() сразу возвращает отсортированный список пар.
Пример работы
[('a', 3), ('b', 2), ('c', 1)]
Сложность
O(n) по времени по числу слов, O(k) по памяти по числу уникальных.
Это решение удобно как отправная точка для экспериментов: попробуйте изменить входные данные и проследить за поведением кода.
Читайте также:
линейное · text.lower().split · работы · сколько · данные · удобно · работает · Решение · каждой · слово · [list[tuplestr · убыванию · поведением · слова · Посчитать · частоты · попробуйте · вместе · текст · import · вхождения · Текст · каждое · Предлагаю · задачу · экспериментов
Comments
Join the discussionNo comments yet. Be the first to comment.