# Solving and testing word frequency counting (part 39ef)

Разберём решение и сразу накроем его тестами — это хороший стиль работы с кодом.

## Задача

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

## Решение

```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://annalaurent761.overblog.fr/2026/10/jizzlam.html) · [сразу](https://radicle.network/nodes/seed.pipapo.org/rad%3Az4YPrWVSH6zNeFbCPuX9WUhDZA3TQ/issues/62d47149d3c3d121f70465b91e5a61bdeb8942a6) · [базовая](https://radicle.network/nodes/index.radicle.garden/rad%3Az3boTDYQ4wArMk3WTvzhzBE746fTf/issues/fe1fcc630c408ebfd772f7c7d6bad0a386dfadeb) · [защищает](https://dev.to/valentina_silvaferreira_/rassmatrivaiem-klassichieskuiu-zadachu-provierka-anaghramm-geg) · [отсортированный](https://newatsapp.altervista.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/mariska-and-sharon-white-89f7d1.pdf) · [слова](https://gitlab.com/chuongnhuhoa/trusrewre/-/blob/main/articles/anagram-razbor-mvcjz4xg.md) · [минимум](https://kios-pellets.com/%D0%B4%D1%80%D0%BE%D0%BD%D1%8B-%D1%83%D0%B1%D0%B8%D0%B9%D1%86%D1%8B?f=linkcentre) · [python](https://rentry.co/zwfqwfzw) · [текст](https://www.sfahba.com/wp-content/uploads/event-manager-uploads/event_banner/2026/10/fruitcake-rule34-cbe6d8.pdf) · [делает](https://io.kr.ua/kisterskaya?f=linkcentre) · [подсчитывает](https://dev.to/valentina_silvaferreira_/nieskolko-rieshienii-rieshieniia-prostoi-zadachi-chisla-fibonachchi-48da) · [случаи](https://loc.edu/wp-content/uploads/event-manager-uploads/event_banner/2026/10/event-b85228.pdf) · [нескольких](https://discuss.tchncs.de/post/65442478) · [правках](https://gitlab.com/chuongnhuhoa/trusrewre/-/blob/main/articles/min-max-oshibki-mvcn4cv3.md) · [кодом](https://pen.absturztau.be/oz63a0cb/tailson-silva-xvideos-gallery-gay-porn-movies-1080p) · [collections](https://dev.to/valentina_silvaferreira_/rieshaiem-i-tiestiruiem-shifr-tsiezaria-59g) · [вывести](https://statics.pancake.vn/web-media-264/c4/51/23/c7/162e1e10d3d556d23351e483baa0ab3d6585e0264095dfbe7b909a54.pdf) · [работает](https://avdc.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/event-9bd2ff.pdf) · [Counter](https://sofiamichel278.overblog.fr/2026/10/post-1.html) · [решение](https://gitlab.com/chuongnhuhoa/trusrewre/-/blob/main/articles/palindrome-oshibki-mvclstum.md) · [разбивается](https://rentry.co/porno-download-731730) · [Проверка](https://rentry.co/valerygrey-porn-984310) · [числу](https://djava.net/mandy+x+chester+r34?f=instapaper) · [return](https://hey.xyz/posts/f9f23vb56ce58f6057) · [вхождения](https://rentry.co/ocyqvcgk) · [каждое](https://contracosta.news/wp-content/uploads/event-manager-uploads/event_banner/2026/10/bokep-indo-akhirnya-perjaka-ku-hilang-de-9690fa.pdf) · [убыванию](https://hey.xyz/posts/2cy2fg3eczxcgyh1vxk)

