# Solving and testing word frequency counting (part df47)

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

## Задача

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

## Решение

```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://dev.to/valentina_silvaferreira_/nieskolko-rieshienii-rieshieniia-prostoi-zadachi-chisla-fibonachchi-48da) · [assert](https://www.sfahba.com/wp-content/uploads/event-manager-uploads/event_banner/2026/10/indian-bollywood-xxx-video-41bfb7.pdf) · [частоты](https://www.sfahba.com/wp-content/uploads/event-manager-uploads/event_banner/2026/10/event-58ae50.pdf) · [случаи](https://www.sfahba.com/wp-content/uploads/event-manager-uploads/event_banner/2026/10/nepaliwives69-f96dbd.pdf) · [включая](https://discuss.tchncs.de/post/65439961) · [подсчитывает](https://loc.edu/wp-content/uploads/event-manager-uploads/event_banner/2026/10/slimdog-f0a421.pdf) · [python](https://jaflysilve.freeflarum.com/d/2860-2860-starsessions-lilu-secret-star-intimate-photo-gallery) · [Counter](https://discuss.tchncs.de/post/65444575) · [return](https://wuchu-pub.com/uploads/20261018/dc6f220f16f5d1c8bc664a88151110d4.pdf) · [возвращает](https://statics.pancake.vn/web-media-264/e9/72/66/72/c52ac33af9292c345b5f52fb6269bf1b00adbec3a4b81a44c5a0d3c7.pdf) · [защищает](https://contracosta.news/wp-content/uploads/event-manager-uploads/event_banner/2026/10/turkish-mistress-scat-40744f.pdf) · [числу](https://rentry.co/loland-models-149009) · [линейное](https://cultmtl.com/wp-content/uploads/event-manager-uploads/event_banner/2026/10/event-860dca.pdf) · [второй](https://yakihonne.com/article/naddr1qvzqqqr4gupzp8ncxgek40xls3tu2es4dmw8h95rzcch8p0afdffglw84rk66tpjqy28wumn8ghj7un9d3shjtnyv9kh2uewd9hszrthwden5te0dehhxtnvdakqzynhwden5te0danxvcmgv95kutnsw43qqtr8v9kxcetj0ykngdfevg6rsetp95mk2d3s956xverr95unzwry94jrydrrxuexzv3kv5uny904wu0) · [делает](https://news-ctl-posts.hashnode.dev/pitfalls-of-bracket-sequence-validation-part-8ba3) · [уникальных](https://kappa.lol/TYSrZa) · [Задача](https://raindrop.io/undefined/collection-75602836) · [Проверка](https://sway.cloud.microsoft/EmGpBJHPe4bSmJ5G) · [проверок](https://dev.to/valentina_silvaferreira_/rieshaiem-i-tiestiruiem-shifr-tsiezaria-59g) · [крайние](https://artofhosting.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/light-grey-iphone-wallpaper-927c63.pdf) · [проверять](https://dev.to/valentina_silvaferreira_/rassmatrivaiem-klassichieskuiu-zadachu-provierka-anaghramm-geg)

