Глава 11 · Очень много информации!

Мини-проект — подсчёт частоты слов

Строки, циклы и словарь-счётчик в одной классической задаче — с ручным алгоритмом и превью готового инструмента из стандартной библиотеки.

Классическая задача, которая объединяет почти всё из этой главы: строки (глава 8), циклы (глава 10) и словарь как счётчик.

Алгоритм по шагам

chastota_slov.py
text = "python is great and python is fun"
words = text.lower().split()

counts = {}
for word in words:
    counts[word] = counts.get(word, 0) + 1

print(counts)
word = 'python'counts.get('python', 0) + 1 = 1 → counts = {'python': 1}word = 'is'counts = {'python': 1, 'is': 1}word = 'great'counts = {'python': 1, 'is': 1, 'great': 1}word = 'and'counts = {..., 'and': 1}word = 'python' сноваcounts.get('python', 0) + 1 = 2 → counts['python'] = 2
counts.get(word, 0) + 1 — если слова ещё нет, get() вернёт 0, и счётчик начнётся с 1
Почему именно .get(word, 0), а не counts[word]
На первой встрече слова ключа word в counts ещё нет — counts[word] вызвал бы KeyError. .get(word, 0) возвращает 0 для нового слова, и код одинаково работает и для новых, и для уже встречавшихся слов.

Тот же алгоритм через setdefault()

chastota_setdefault.py
counts = {}
for word in words:
    counts.setdefault(word, 0)
    counts[word] += 1

Чуть глубже — стандартная библиотека уже решила эту задачу

counter_preview.py
from collections import Counter

counts = Counter(words)
print(counts)             # Counter({'python': 2, 'is': 2, 'great': 1, 'and': 1, 'fun': 1})
print(counts.most_common(2))   # [('python', 2), ('is', 2)]
Ручной алгоритм важнее, чем готовая функция
Counter из стандартной библиотеки делает то же самое в одну строку — и в реальном коде часто лучше использовать именно его. Но алгоритм на .get(word, 0) + 1 стоило пройти руками: он показывает, как вообще устроен подсчёт через словарь, а не только то, что для этого есть готовый инструмент.
Практика: подсчёт частоты слов в тексте
Интерактивный ноутбук прямо в браузере — Python 3.14 через Pyodide, без установки
Открыть практику →