Введение
В 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']) # Вывод: []
Также можно передать любую другую функцию, которая не принимает аргументов и возвращает значение по умолчанию.
Это позволяет упростить код и избежать ошибок при обращении к несуществующим ключам.
Добавить комментарий