Skip to main content

Command Palette

Search for a command to run...

Step-by-step: word frequency counting (part be10)

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

Разбор по шагам

  1. Шаг 1. Входные данные. Проверяем, что приходит в функцию, и какие значения считаются корректными.
  2. Шаг 2. Основной цикл. Именно здесь происходит вся работа; следим за изменениями переменных на каждой итерации.
  3. Шаг 3. Результат. Убеждаемся, что возвращаемое значение соответствует условию задачи, включая крайние случаи.

Читая чужой код, повторите тот же мысленный разбор по шагам — это самый быстрый способ научиться.

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

памяти · каждое · Решение · каждой · изменениями · работа · данные · считаются · Именно · линейное · уникальных · функцию · отсортированный · return · Сложность · переменных · приходит · возвращает · сколько · разбор · здесь · чужой · Входные · встречается · соответствует · collections · понять · text.lower().split · вывести · включая

More from this blog

N

News

4298 posts