Словари как таблицы поиска
Сопоставляйте ключи со значениями для быстрого доступа
«Словари как таблицы поиска» — бесплатный урок Competitive Programming Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Competitive Programming Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Competitive Programming Academy содержит 4 уроков всего.
Идея словаря
Словарь сопоставляет ключи со значениями и позволяет получить сохранённый ответ по имени, не выполняя перебор. Это ваша таблица поиска для соревнований. 🔑
Доступ за постоянное время
Как и множество, словарь хеширует ключ, поэтому чтение и запись занимают примерно O(1). Благодаря этой скорости словарь заменяет медленный линейный поиск.
Создание словаря
Запишите пары ключ–значение внутри фигурных скобок или начните с пустой пары фигурных скобок. Каждый ключ указывает ровно на одно значение.
age = {'amy': 21, 'bob': 19}
empty = {}Чтение по ключу
Получите значение, используя квадратные скобки вокруг ключа. Ключ действует подобно индексу, но может быть строкой, числом или кортежем.
print(age['amy'])Сбой при отсутствии ключа
Чтение отсутствующего ключа в квадратных скобках вызывает KeyError. В соревновании это сразу превращается в вердикт об ошибке во время выполнения.
Безопасное чтение с помощью get
Используйте get, чтобы вернуть значение по умолчанию вместо сбоя, если ключ отсутствует. Это безопасный способ читать ключи, которые могут отсутствовать.
count = age.get('zoe', 0)Вставка и обновление
Присваивание значения ключу либо добавляет его, либо перезаписывает старое значение. Один и тот же синтаксис обрабатывает и вставку, и обновление.
age['cara'] = 25
age['amy'] = 22Проверяйте перед чтением
Проверяйте наличие с помощью in, прежде чем полагаться на ключ. Это защищает от KeyError и делает логику программы явной.
if 'bob' in age:
print(age['bob'])Сопоставление значений с позициями
Классический приём — сохранить индекс каждого значения, чтобы позже за один шаг узнать, где оно находилось. Это особенно полезно в задачах на поиск пар.
pos = {}
for i, v in enumerate(nums):
pos[v] = iПеребор пар
Перебирайте ключи и значения вместе с помощью элементов. Это понятнее, чем повторно искать каждое значение внутри цикла.
for name, a in age.items():
print(name, a)Ключи должны быть хешируемыми
Ключи словаря должны быть хешируемыми, поэтому используйте числа, строки или кортежи. Список не может быть ключом, а кортеж целых чисел может.
seen = {(0, 0): 'start'}Быстрая проверка
Вы хотите прочитать ключ, который может не существовать, и не допустить сбоя.
Итоги
Словарь сопоставляет ключи со значениями и обеспечивает поиск за O(1). Используйте get для безопасного чтения, а индексы — чтобы превращать медленный перебор в мгновенный ответ. 🚀
Часто задаваемые вопросы
Урок «Словари как таблицы поиска» бесплатный?
Да — полный текст урока «Словари как таблицы поиска» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Competitive Programming Academy, подпишись на CoddyKit PRO. Курс Competitive Programming Academy содержит 4 уроков всего.
Чему я научусь в уроке «Словари как таблицы поиска»?
Сопоставляйте ключи со значениями для быстрого доступа Ты практикуешь Competitive Programming Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Competitive Programming Academy?
Предыдущий опыт не требуется. Competitive Programming Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.
Сколько времени занимает урок «Словари как таблицы поиска»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Competitive Programming Academy?
Да. Каждый урок Competitive Programming Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Множества для проверки принадлежности и удаления дублей
- Словари как таблицы поиска
- Counter и defaultdict в действии
- Группировка и распределение по корзинам с помощью map