Skip to main content

Walking through word frequency counting (part 5c4d)

Updated 1 min readMarkdown

Разберём задачу, которая встречается практически в каждом учебнике по программированию.

Задача

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

Решение

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

Это решение удобно как отправная точка для экспериментов: попробуйте изменить входные данные и проследить за поведением кода.

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

данные · разбивается · список · которая · поведением · учебнике · отсортированный · решение · удобно · python · проследить · подсчитывает · задачу · [list[tuplestr · вхождения · слова · Сложность · встречается · Пример · каждом · памяти · текст · сколько · попробуйте · изменить · return · Решение · Текст · убыванию

No comments yet. Be the first to comment.

More from this blog