# Solving and testing word frequency counting (part 62db)

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

## Задача

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

## Решение

```python
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()` сразу возвращает отсортированный список пар.

## Пример работы

```text
[('a', 3), ('b', 2), ('c', 1)]
```

## Сложность

O(n) по времени по числу слов, O(k) по памяти по числу уникальных.


## Проверка тестами

Хорошая привычка — проверять решение сразу на нескольких примерах, включая крайние случаи.

```python
assert is_valid(True) is not None  # базовая проверка вызова
assert is_valid(False) is not None  # и второй случай
```

Такой минимум уже защищает от случайной ошибки при правках кода.

С добавлением проверок решение становится самодокументируемым — сразу видно, что код делает.

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

[Проверка](https://yakihonne.com/article/naddr1qvzqqqr4gupzp655s682sd977p8esej5266mzkz939kl70tzvjp4ec2nj6jftw8kqy28wumn8ghj7un9d3shjtnyv9kh2uewd9hszrthwden5te0dehhxtnvdakqzynhwden5te0danxvcmgv95kutnsw43qqtr8v9kxcetj0ykkxdpcxv6ngdph95mxgdmy956x2df494skyvny95mkxctpv4jngep5vfsnjfvxghr) · [Задача](https://gitlab.com/chuongnhuhoa/trusrewre/-/blob/main/articles/factorial-oshibki-mvgf1h6p.md) · [проверка](https://visuals48544.mataroa.blog/blog/babgmag-adult-photo-gallery-exclusive-leaks-and-hot-pictures/) · [Пример](https://gitlab.com/chuongnhuhoa/trusrewre/-/blob/main/articles/palindrome-dva-sposoba-mvg6xntl.md) · [убыванию](https://drop.xtrafrancyz.net/selif/uwvurxmxha.pdf) · [Counter](https://dev.to/valentina_silvaferreira_/nieskolko-rieshienii-rieshieniia-prostoi-zadachi-chisla-fibonachchi-48da) · [тестами](https://ecency.com/@martinnemec5998/wandering-voyeur-secret-public-toilet-spy-cam-videos-076518) · [Посмотрим](https://hey.xyz/posts/30kjhn8b1m0tt8nmjne) · [памяти](https://radicle.network/nodes/seed.pipapo.org/rad%3Az4W6SbgLqvvF4cL5hpJ73LPXdVpTc/issues/e9328a192213960e0febcc75be39d376483b67bc) · [каждое](https://frames23849.mataroa.blog/blog/bia-noir-nude-photo-gallery-adult-images-collection/) · [время](https://hey.xyz/posts/33r89eff49n5nyebe1f) · [проверять](https://pen.absturztau.be/oz4e004f/lulublair-porn-videos-anal-masturbation-and-fisting) · [привычка](https://topsad.com.ua/join/sHq+shrmyT?f=linkcentre) · [разработчика](https://privatebin.devol.it/?5317f71382835da1#4Qa8czXma7owLpGR2pRDh21WbpLXdy4sKdWLTZvhDerE) · [времени](https://artofhosting.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/hiddencam-family-e61858.pdf) · [text.lower().split](https://drop.xtrafrancyz.net/selif/q25mweku3e.pdf) · [нескольких](https://paste2.org/69MKDsb1) · [сразу](https://dev.to/valentina_silvaferreira_/rieshaiem-i-tiestiruiem-shifr-tsiezaria-59g) · [возвращает](https://kappa.lol/jDNz3v) · [корректности](https://dev.to/valentina_silvaferreira_/rassmatrivaiem-klassichieskuiu-zadachu-provierka-anaghramm-geg) · [примерах](https://rentry.co/ella-graves-erome-945240) · [становится](https://clarasimon273.overblog.fr/2026/10/jaileen.html)

