Вебинары Разобраться в IT Реферальная программа
Программирование Аналитика Дизайн Маркетинг
07 Июл 2023
2 мин
2130

Разница между collections.defaultdict и обычным словарем в Python

Введение В Python есть структура данных, которая называется словарем (dict). Она позволяет хранить пары ключ-значение и получать значения по ключу. Вот пример

Введение

В Python есть структура данных, которая называется словарем (dict). Она позволяет хранить пары ключ-значение и получать значения по ключу. Вот пример использования обычного словаря:

d = {}
d['apple'] = 1
print(d['apple'])  # Вывод: 1

Но что произойдет, если мы попытаемся получить значение по ключу, которого нет в словаре? Например:

print(d['banana'])  # Вызовет ошибку KeyError: 'banana'

Проблема

Это может вызвать проблему, если в коде не предусмотрено обращение к несуществующему ключу. Одно из решений — использовать метод get(), который возвращает None, если ключ не найден:

print(d.get('banana'))  # Вывод: None

Но что если мы хотим, чтобы при обращении к несуществующему ключу возвращалось определенное значение по умолчанию, например, 0 для чисел или пустой список для списков?

Курсы по программированию
Помогаем получить новую профессию с гарантией трудоустройства!
Подробнее
Курсы по программированию

Решение: collections.defaultdict

Здесь на помощь приходит collections.defaultdict. Это подкласс обычного словаря, который позволяет задать значение по умолчанию для несуществующих ключей.

Создать defaultdict можно так:

from collections import defaultdict
d = defaultdict(int)

Теперь при обращении к несуществующему ключу будет возвращаться 0:

print(d['banana'])  # Вывод: 0

Это работает, потому что int() возвращает 0. Если бы мы вместо int передали list, то при обращении к несуществующему ключу возвращался бы пустой список:

d = defaultdict(list)
print(d['banana'])  # Вывод: []

Также можно передать любую другую функцию, которая не принимает аргументов и возвращает значение по умолчанию.

Это позволяет упростить код и избежать ошибок при обращении к несуществующим ключам.

Тест на профориентацию
За 10 минут узнайте, как ваш опыт пригодиться в IT индустрии
Подробнее
Тест на профориентацию

Добавить комментарий