Skip to main content

Command Palette

Search for a command to run...

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

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

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

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

Когда каждый шаг понятен, доработка решения перестаёт быть лотереей.

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

Посчитать · задачи · решения · убыванию · приходит · переменных · сколько · сразу · Проверяем · разбор · работы · возвращает · return · доработка · Counter · корректными · линейное · итерации · скопировать · import

More from this blog

N

News

3135 posts