# Solving and testing word frequency counting (part ac23)

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

## Задача

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

## Решение

```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://paper.wf/olganeumann84log/twitter-gizli-ensest-fotograflari-turk-porno-galerisi) · [collections](https://rentry.co/iralira-858734) · [нескольких](https://discuss.tchncs.de/post/65445828) · [глазами](https://discuss.tchncs.de/post/65439895) · [работы](https://discuss.tchncs.de/post/65440521) · [примерах](https://kappa.lol/l3fYoq) · [линейное](https://hey.xyz/posts/1c9px43y6fdv8qb04t9) · [проверять](https://milhench.com/wp-content/uploads/event-manager-uploads/event_banner/2026/10/31-vakti-d8dd12.pdf) · [каждое](https://gitlab.com/chuongnhuhoa/trusrewre/-/blob/main/articles/quicksort-razbor-mvjsq95b.md) · [проверок](https://vit.ac.in/wp-content/uploads/event-manager-uploads/event_banner/2026/10/rinhee-8f4464.pdf) · [задачу](https://milhench.com/wp-content/uploads/event-manager-uploads/event_banner/2026/10/event-1aeeea.pdf) · [корректности](https://e1.pics/yqk%E5%A4%A7%E7%A5%9E?f=instapaper) · [встречается](https://yakihonne.com/article/naddr1qvzqqqr4gupzptyexkx43pvmjj46gm4sc76kcp5957vpccyjxhmk769l7jtd49xsqy28wumn8ghj7un9d3shjtnyv9kh2uewd9hszrthwden5te0dehhxtnvdakqzynhwden5te0danxvcmgv95kutnsw43qqtr8v9kxcetj0yknxwps8ymxzdrz943kzveh956rse3h95ukvvrx94nrwefexd3ngdek8qexxx7ent7) · [return](https://dev.to/valentina_silvaferreira_/rieshaiem-i-tiestiruiem-shifr-tsiezaria-59g) · [сразу](https://blogfreely.net/catherine-vasilyev70/kerala-mallu-naked-malayalam-desi-nude-photo-gallery-x53w) · [случай](https://privatebin.devol.it/?fa3c65ebc5d2c8c1#6kr6DsJsNGyfYBLt5QV43Q7nj6DG96wLXxj5jffDYyKG) · [Проверка](https://visuals58418.mataroa.blog/blog/angelmarr-leaks-angellmarr-nude-onlyfans-photos-and-vip-channel-access/) · [убеждаемся](https://dev.to/valentina_silvaferreira_/nieskolko-rieshienii-rieshieniia-prostoi-zadachi-chisla-fibonachchi-48da) · [привычка](https://stills94541.mataroa.blog/blog/tango-eylul-ifsa/) · [случаи](https://dev.to/valentina_silvaferreira_/rassmatrivaiem-klassichieskuiu-zadachu-provierka-anaghramm-geg) · [решение](https://gall.dcinside.com/mgallery/board/view/?id=thekpop&no=64457) · [Хорошая](https://drop.xtrafrancyz.net/selif/anziaern8h.pdf) · [list[tuple[str](https://contracosta.news/wp-content/uploads/event-manager-uploads/event_banner/2026/10/jakerman-4ba95d.pdf) · [время](https://drop.xtrafrancyz.net/selif/q94s84bmc6.pdf) · [проверка](https://milhench.com/wp-content/uploads/event-manager-uploads/event_banner/2026/10/ts-6d7edc.pdf) · [слово](https://sesso.tube/superips?f=instapaper) · [добавлением](https://rentry.co/uhfsrmr3) · [words](https://journal.kharkiv.ua/valeriia+makusheva+nude?f=instapaper)

