Курс 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. Экспорт данных в файл.
  3. Отделение звука от видео
  4. Печать списка с помощью метода join
  5. Скачать видео с YouTube
  6. Конкатенация строковых литералов
  7. Python 3.12: переиспользование кавычек
  8. Enum в Python
  9. Работа с контекстным менеджером Pool
  10. Генераторные функции в Python
  11. Работа с CSV в Python
  12. Генератор чисел Фибоначчи
  13. Проверка кортежей.
  14. Возврат нескольких значений
  15. Разбиение строки в Python
  16. Работа с исключениями в Python
  17. Работа с NumPy.linalg
  18. Генерация фальшивых данных с Faker
  19. Работа с комплексными числами в Python
  20. Принципы программирования
  21. Переопределение метода
  22. История Python
  23. Открытие, чтение и закрытие файла
  24. Переопределение метода __eq__
  25. Отправка POST-запроса в REST API
  26. Оператор in для Python
  27. Удаление элемента из списка
  28. Конструктор в Python
  29. Область видимости переменных
  30. Транспонирование 2D-массива с помощью zip
  31. Переопределение метода len
  32. Метод rxor для операции побитового исключающего «или»
  33. Проверка файла .py на синтаксис.
  34. Работа со строками в Python
  35. Возвращение нескольких значений
  36. Условные выражения в Python
  37. Списки в Python: основы
  38. split() без разделителя
  39. Библиотека funcy: удобные утилиты
  40. Склеивание строк через метод join()
  41. Методы HTTP запросов в Flask
  42. Установка и использование модуля Wikipedia
  43. Beautiful Soup — извлечение данных из HTML
  44. Метод __index__ в Python
  45. Python Метод del.
  46. Создание графиков в терминале

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