Solving and testing word frequency counting (part 496d)
Посмотрим на задачу глазами разработчика: сначала решение, затем убеждаемся в его корректности.
Задача
Дан текст. Посчитать, сколько раз встречается каждое слово, и вывести слова по убыванию частоты.
Решение
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) по памяти по числу уникальных.
Проверка тестами
Хорошая привычка — проверять решение сразу на нескольких примерах, включая крайние случаи.
assert is_valid(True) is not None # базовая проверка вызова
assert is_valid(False) is not None # и второй случай
Такой минимум уже защищает от случайной ошибки при правках кода.
Тесты вида assert удобны для учебных задач: они короткие, наглядные и не требуют фреймворков.
Читайте также:
Тесты · возвращает · второй · работает · collections · минимум · text.lower().split · сначала · крайние · решение · Посмотрим · import · вхождения · время · python · Такой · требуют · примерах · слова · защищает · удобны · убеждаемся · слово · случаи · сразу · уникальных · Посчитать · Проверка
