Coding Interview Prep · Урок

Counter и defaultdict в действии

Подсчитывайте элементы без ошибок отсутствующих ключей

Урок 3 из 413 шагов

«Counter и defaultdict в действии» — бесплатный урок Coding Interview Prep на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Coding Interview Prep, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Coding Interview Prep содержит 4 уроков всего.

Подсчёт без лишних сложностей

Подсчёт количества появлений встречается повсюду в соревнованиях. Модуль коллекций предоставляет два инструмента, которые делают подсчёт простым. 🧮

Проблема отсутствующего ключа

Обычный словарь вызывает KeyError, когда вы увеличиваете ключ, которого ещё нет. Специальные структуры избавляют вас от этой лишней работы.

Знакомство со счётчиком

Счётчик подсчитывает элементы любого итерируемого объекта одной строкой, записывая частоту каждого элемента как значение. Для отсутствующих ключей просто используется ноль.

from collections import Counter
freq = Counter(nums)

Чтение количества

Обращайтесь к счётчику по индексу, как к словарю, но для отсутствующего ключа он возвращает ноль, а не вызывает сбой. Поэтому такой поиск полностью безопасен.

print(freq[5])
print(freq[999])

Самые частые элементы

Вызовите most_common, чтобы получить элементы, отсортированные от наибольшей частоты к наименьшей. Передайте число, чтобы ограничить количество возвращаемых лидирующих записей.

top3 = freq.most_common(3)

Счётчики поддерживают арифметику

Вы можете add или вычесть два счётчика, чтобы объединить подсчёты. Совпадающие ключи объединяются, а итоговые значения автоматически согласуются.

total = Counter(a) + Counter(b)

Знакомство со словарём значений по умолчанию

Словарь значений по умолчанию создаёт новое значение по умолчанию для любого нового ключа, поэтому сначала проверять наличие не нужно. Вы задаёте ему фабрику значений по умолчанию.

from collections import defaultdict
count = defaultdict(int)

Увеличение без проверок

В словаре значений по умолчанию для целых чисел отсутствующий ключ начинается с нуля, поэтому его можно сразу увеличивать. Условие проверки наличия не загромождает цикл.

for v in nums:
    count[v] += 1

Списки по умолчанию

Используйте словарь значений по умолчанию для списков, когда каждый ключ собирает много значений. Добавление элемента к совершенно новому ключу просто начинает новый пустой список.

groups = defaultdict(list)
groups[key].append(item)

Счётчик или словарь значений по умолчанию

Выбирайте счётчик, когда нужно только подсчитывать элементы, а словарь значений по умолчанию — когда каждому ключу нужны списки, множества или особые значения по умолчанию. 🎯

Анаграмма в одну строку

Два слова являются анаграммами в точности тогда, когда их счётчики равны. Сравнение сразу учитывает частоту каждой буквы.

is_anagram = Counter(s) == Counter(t)

Быстрая проверка

Вы хотите подсчитывать вхождения и безопасно увеличивать отсутствующие ключи.

Итоги

Счётчик мгновенно подсчитывает элементы и упорядочивает их, а словарь значений по умолчанию избавляет от проверок отсутствующих ключей при работе с количествами, списками или множествами. Оба инструмента устраняют шаблонный код. 🚀

Можно начать бесплатно

Изучай Coding Interview Prep с ИИ-репетитором — бесплатно

Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.

Курсы
90
Уроки
360

Часто задаваемые вопросы

Урок «Counter и defaultdict в действии» бесплатный?

Да — полный текст урока «Counter и defaultdict в действии» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Coding Interview Prep, подпишись на CoddyKit PRO. Курс Coding Interview Prep содержит 4 уроков всего.

Чему я научусь в уроке «Counter и defaultdict в действии»?

Подсчитывайте элементы без ошибок отсутствующих ключей Ты практикуешь Coding Interview Prep с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Coding Interview Prep?

Предыдущий опыт не требуется. Coding Interview Prep на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.

Сколько времени занимает урок «Counter и defaultdict в действии»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Coding Interview Prep?

Да. Каждый урок Coding Interview Prep включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Множества для проверки принадлежности и удаления дублей
  2. Словари как таблицы поиска
  3. Counter и defaultdict в действии
  4. Группировка и распределение по корзинам с помощью map
← Назад к Coding Interview Prep