07 Июл 2023
2 мин
1739

Разница между 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'])  # Вывод: []

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

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

Содержание

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

Определи профессию по рисунку