Курс Python → Работа со словарями с defaultdict из collections

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

Обычные словари в Python не позволяют обращаться к несуществующим ключам без генерации исключения KeyError. Это означает, что перед доступом к значению по ключу необходимо проверять, существует ли этот ключ в словаре. Например:

my_dict = {}
key = 'example'
if key in my_dict:
    value = my_dict[key]
else:
    value = 0  # или любое другое значение по умолчанию

С использованием defaultdict этот процесс значительно упрощается. Вы можете указать тип значения по умолчанию, и если запрашиваемый ключ отсутствует, defaultdict автоматически создаст его с заданным значением. Например, если вы хотите использовать целые числа в качестве значений по умолчанию, вы можете сделать следующее:

from collections import defaultdict

my_defaultdict = defaultdict(int)
my_defaultdict['example'] += 1  # автоматически инициализирует 'example' значением 0, затем увеличивает его на 1
print(my_defaultdict['example'])  # Вывод: 1

Класс defaultdict может принимать различные функции в качестве аргументов для инициализации значений. Например, вы можете использовать list для создания словаря, где каждое значение будет списком. Это удобно, когда нужно группировать данные по ключам:

from collections import defaultdict

grouped_data = defaultdict(list)
grouped_data['fruits'].append('apple')
grouped_data['fruits'].append('banana')
grouped_data['vegetables'].append('carrot')

print(grouped_data)  # Вывод: defaultdict(<class 'list'>, {'fruits': ['apple', 'banana'], 'vegetables': ['carrot']})

Таким образом, использование defaultdict позволяет избежать избыточности кода и делает его более лаконичным. С помощью этого инструмента можно легко управлять значениями по умолчанию и создавать более сложные структуры данных, не беспокоясь о наличии ключей. Это особенно полезно в ситуациях, когда необходимо обрабатывать большие объемы данных, например, при анализе текстов или при работе с базами данных.

Твои коллеги будут рады, поделись в

Автор урока

Дмитрий Комаровский
Дмитрий Комаровский

Автоматизация процессов
в КраснодарБанки.ру

Другие уроки курса "Python"

  1. Разбиение строки в Python
  2. Метод split() в Python
  3. Работа со словарями Python
  4. Объединение списков с помощью zip
  5. Python: Фильтрация списков с помощью filter()
  6. Атрибуты класса и экземпляра
  7. Методы работы со списками
  8. Декораторы в Python
  9. Генерация резюме в Gensim
  10. Зарезервированные слова в Python
  11. Итерации в Python
  12. Вложенные генераторы в Python
  13. Безопасный доступ к значениям словаря
  14. Переворот строки
  15. Оператор continue в Python
  16. Удаление ключей из словаря
  17. Параллельные вычисления в Python
  18. Метод __irshift__ для побитового сдвига вправо
  19. Python Менеджер контекста
  20. Работа с типами данных в Python с помощью pydantic.
  21. Объединение списков с использованием itertools.chain
  22. Генераторы в Python
  23. Настройка шрифта и цвета в Tkinter
  24. Объединение строк с помощью метода join
  25. Модуль subprocess: запуск внешних команд
  26. Итерация по итерируемым объектам
  27. ROT13 Шифр Цезаря в Python
  28. Создание циклической ссылки
  29. Создание новых функций через partial
  30. Обход элементов в Python
  31. Удаление элементов из списка
  32. Удаление ресурса в Python
  33. Установка максимального количества цифр
  34. Вызов функций по строке в Python.
  35. Замыкания в Python
  36. Операторы присваивания в Python
  37. ChainMap избыточные ключи
  38. Асинхронный код в Python
  39. Константы в модуле cmath
  40. Перезагрузка оператора в Python
  41. Построение графиков в терминале с bashplotlib
  42. Функция zip() — объединение последовательностей
  43. Работа с *args и **kwargs в Python
  44. Метод append() для списка
  45. Оператор Walrus в Python 3.8
  46. Метод join() для объединения элементов в строку.

Marketello читают маркетологи из крутых компаний