Skip to main content

Command Palette

Search for a command to run...

Exploring word frequency counting (part ffb6)

Updated
•1 min read•View as Markdown

Предлагаю решить задачу вместе: без спешки, с объяснением каждой строки.

Задача

Дан текст. Посчитать, сколько раз встречается каждое слово, и вывести слова по убыванию частоты.

Решение

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) по памяти по числу уникальных.

Такой пример хорошо закрепляется практикой — перепишите решение руками и прогоните на своих тестах.

Читайте также:

Пример · текст · линейное · Такой · убыванию · памяти · collections · перепишите · уникальных · практикой · вместе · python · работает · время · каждой · сколько · import · прогоните · объяснением · слово · руками · сразу · тестах · слова · своих · спешки

More from this blog

N

News

2971 posts