Представьте, что вы разбираете ящик с лего. Counter — это помощник, который мгновенно скажет, сколько у вас красных, синих и жёлтых деталей. defaultdict — это набор подписанных коробочек, которые «появляются сами», как только вы кладёте в них первую деталь: не нужно заранее заводить коробку под каждый цвет. А itertools — это инструкция, как собрать все возможные пары деталей, не перебирая их вручную.
collections.Counter — подсчёт за одну строку
Counter мгновенно считает, сколько раз встречается каждый элемент. Незаменим для частотного анализа.
▶ counter.py
defaultdict — словарь со значением по умолчанию
Избавляет от проверки «а есть ли уже такой ключ» при группировке данных.
▶ defaultdict.py
itertools — умные итерации
Модуль itertools даёт готовые комбинаторные инструменты: сочетания, перестановки, накопленные суммы.
▶ itertools-mod.py
💡Совет
🔮 Предскажите вывод
Counter.most_common(n) возвращает списокИзменяемая упорядоченная коллекция элементов: [1, 2, 3]. По-английски list. пар (элемент, количество), отсортированный по убыванию частоты. Что выведет код?
▶ predict-counter.py
Ответ — 3, затем [('a', 3)]. В слове «banana» буква «a» встречается трижды, поэтому c["a"] равно 3. most_common(1) возвращает список из одной пары — самый частый элемент вместе с его количеством, а не просто букву.
⚠️ Частые ошибки новичков
Частая ошибка — обращаться к defaultdict, ожидая KeyError для нового ключа, и удивляться, что он молча создаётся. defaultdict(list) при первом обращении к новому ключу заводит пустой список. Но если по ошибке создать defaultdict без фабрики (просто defaultdict()), обращение к новому ключу всё же даст ошибку. Запустите код и передайте list в конструктор.
▶ broken-defaultdict.py
Заданиерешение.py
Используя Counter, напишите функцию most_frequent(text), возвращающую самый частый символ строки (одну букву). Например, для "hello" — это "l".
Заданиерешение.py
Доп. задача. Используя defaultdict, напишите group_by_length(words): сгруппируйте слова по их длине. Верните обычный dict вида {длина: [слова]}.
❓Проверь себя
Что возвращает Counter.most_common(2)?
Чем удобен defaultdict(list) при группировке?
ℹ️Важно
✅ Что вы узнали
Counter мгновенно считает частоты; most_common(n) даёт топ-N пар (элемент, количество).
defaultdict(list) сам создаёт пустой список для нового ключа — удобно для группировки.
itertools даёт готовые combinations (порядок не важен) и permutations (порядок важен).
defaultdict без фабрики ведёт себя как обычный dict и даёт KeyError.
Комментарии
Загрузка…
Загрузка комментариев…