Курс 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. Работа с набором данных CIFAR10 в PyTorch
  2. Работа с классами данных
  3. Списки в Python
  4. Работа с getopt
  5. Работа с функцией next() в Python
  6. Создание файла с проверкой ошибки
  7. Метод pos в Python
  8. Работа с YAML в Python
  9. Методы HTTP запросов в Flask
  10. Реверс строки и списка в Python.
  11. Область видимости переменных
  12. Изменение элемента списка
  13. Игра Виселица на Python
  14. Структура строк в Python
  15. Итерация по копии коллекции
  16. Изменение элемента списка
  17. Создание инструмента обнаружения плагиата
  18. Вывод с переменной через запятую
  19. Вакансии в Nebius
  20. Генераторы в Python
  21. Разделение строки с регулярными выражениями
  22. Преобразование текста в нижний регистр
  23. Форматирование вывода с F-строками
  24. Функции min(), max(), sum()
  25. Декоратор Property в Python
  26. Присвоение и ссылки
  27. Ошибка NotImplemented в Python
  28. Копирование файлов с shutil()
  29. Конвертация текстовых чисел с помощью Numerizer
  30. Генераторы в Python
  31. Работа с Path в Python
  32. Работа с изображениями PIL
  33. Стать Python-разработчиком
  34. Работа с датами в Python
  35. Оператор continue в Python
  36. Срезы в Python
  37. Расширение операции побитового «и» в Python
  38. Удаление файлов с shutil.os.remove()
  39. Генератор чисел Фибоначчи
  40. Асинхронное выполнение задач в процессах
  41. Метод title() в Python
  42. Тестирование с responses
  43. Генерация UUID в Python
  44. Защита данных в Python
  45. Возврат нескольких значений
  46. Обработка ошибок в JSON данных
  47. Получение обратного списка чисел
  48. Прокачанный трейсинг ошибок

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