defaultdict python 3 что это: полное объяснение и примеры

defaultdict в Python 3 - это класс из модуля collections. Он представляет собой словарь с дополнительной особенностью: если вы обращаетесь к несуществующему ключу, вместо ошибки создается новая запись с заданным значением по умолчанию.

Пример:

from collections import defaultdict

d = defaultdict(int)  # Создаем defaultdict с значением по умолчанию типа int
d['a'] += 1  # Если 'a' не существует, создается новая запись с значением 0, и затем увеличивается на 1
print(d['a'])  # Вывод: 1

# Можно также указать другое значение по умолчанию
d = defaultdict(str)  # Создаем defaultdict с значением по умолчанию типа str
print(d['b'])  # Вывод: ""

# Можно даже использовать функцию, чтобы определить значение по умолчанию
d = defaultdict(lambda: "Неизвестно")
print(d['c'])  # Вывод: "Неизвестно"

Детальный ответ

defaultdict Python 3 - что это?

defaultdict является одним из классов, предоставляемых модулем collections в Python 3. Он представляет собой подкласс обычного словаря dict с расширенными функциональными возможностями.

Основное отличие defaultdict заключается в том, что он позволяет нам указать функцию-фабрику (default factory), которая будет автоматически создавать значения для ключей, если эти ключи отсутствуют в словаре. Это очень удобно, поскольку позволяет избежать ошибки KeyError в случаях, когда пытаемся получить значение по несуществующему ключу.

Давайте посмотрим на пример кода, чтобы увидеть, как можно использовать defaultdict:


from collections import defaultdict

# Создаем defaultdict с указанием функции-фабрики
fruit_count = defaultdict(int)

# Добавляем несколько значений в словарь
fruit_count['яблоко'] = 3
fruit_count['апельсин'] = 5

print(fruit_count['яблоко'])  # Output: 3
print(fruit_count['апельсин'])  # Output: 5
print(fruit_count['банан'])  # Output: 0 (значение создано с помощью функции-фабрики int())
    

В приведенном выше примере мы создали defaultdict с помощью функции-фабрики int(), которая возвращает значение 0. Это означает, что если мы обратимся к несуществующему ключу (например, 'банан'), defaultdict автоматически создаст значение 0 для этого ключа.

Таким образом, при выполнении fruit_count['банан'] словарь fruit_count автоматически создает новую пару ключ-значение с ключом 'банан' и значением 0.

Использование других функций-фабрик

Вместо int() функцию-фабрику в defaultdict можно заменить на другую функцию по вашему выбору. Например, если мы хотим использовать список в качестве значения по умолчанию, мы можем указать функцию-фабрику list():


from collections import defaultdict

# Создаем defaultdict с указанием функции-фабрики list()
student_scores = defaultdict(list)

# Добавляем несколько значений в словарь
student_scores['Иван'] = [85, 90, 92]
student_scores['Мария'] = [78, 80, 88]

print(student_scores['Иван'])  # Output: [85, 90, 92]
print(student_scores['Мария'])  # Output: [78, 80, 88]
print(student_scores['Алексей'])  # Output: [] (значение создано с помощью функции-фабрики list())
    

В этом примере мы использовали функцию-фабрику list() для создания пустого списка в случае, если ключ отсутствует в словаре. Даже если у студента нет оценок, список будет автоматически создан. Для студента 'Алексей' в результате выполнения student_scores['Алексей'] будет выведен пустой список [].

Заключение

Defaultdict - это полезный класс, который расширяет функциональность стандартного словаря, позволяя указать функцию-фабрику для создания значений по умолчанию. Это помогает избежать ошибок KeyError и упрощает работу со словарями, особенно в случаях, когда требуется хранить значения определенного типа (например, список или число).

Видео по теме

Сollections defaultdict python

Помощник defaultdict в #Python #SurenPyTips

collections defaultdict на примере задачи с собеседования

Похожие статьи:

🔧 Как заменить значение в словаре Python: Подробный гайд и примеры

🐍 Что можно сделать на Python для начинающих: 5 простых проектов для начала

Как добавить элемент в список Python? 🐍

defaultdict python 3 что это: полное объяснение и примеры

5 способов достать значение из функции python 🐍

Что означает символ R в Python?

Как открыть txt файл в Python: руководство для начинающих