Курс Python → Раздувающийся словарь в Python

Раздувающийся экземпляр словаря — это явление, которое может наблюдаться при работе с Python. Когда мы создаем несколько словарей и выводим их содержимое, мы можем заметить, что они становятся все больше и больше. Почему это происходит? Дело в том, что в CPython используется оптимизация, позволяющая повторно использовать один и тот же объект «keys» в нескольких словарях. Это было введено в PEP 412 с целью экономии памяти, особенно в случаях, когда ключи словаря повторяются в разных экземплярах.

Оптимизация, позволяющая повторно использовать объект «keys», полностью работает для словарей, но может быть отключена, если нарушаются определенные допущения. Например, если происходит изменение ключей в словаре, то оптимизация может быть отключена, и словарь начнет «раздуваться». Это происходит потому, что CPython больше не может повторно использовать объект «keys» из-за изменений в структуре словаря.

example_dict1 = {'a': 1, 'b': 2}
example_dict2 = {'c': 3, 'd': 4}
print(example_dict1)
print(example_dict2)

В данном примере мы создаем два словаря example_dict1 и example_dict2, каждый из которых содержит пары ключ-значение. При выводе содержимого этих словарей, мы можем увидеть, как они могут «раздуться» из-за оптимизации, применяемой в CPython. Это явление может быть наблюдаемо при работе с большим количеством словарей или при изменении ключей в словаре.

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

Автор урока

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

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

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

  1. Множественное назначение в Python
  2. Преобразование букв в нижний регистр
  3. Функция rsplit() в Python
  4. Создание уникального проекта
  5. Поиск наиболее частого элемента в списке
  6. Тип данных TypeVarTuple
  7. Метод join() для объединения элементов строки
  8. Метод join() для объединения строк
  9. Метод __ixor__ для побитового исключающего ИЛИ
  10. Python Менеджер контекста
  11. Метод __irshift__ для Python
  12. Возврат нескольких значений из функции
  13. Официальный канал Python в Telegram
  14. Автоматизация действий с Pyautogui
  15. Метод getitem для доступа к элементам последовательности
  16. Импорт модуля из другого каталога
  17. Инверсия списка и строки
  18. Подсчет вхождений элементов
  19. Генераторы данных
  20. Многострочные комментарии в Python
  21. Оператор assert в Python
  22. Принципы SRP и OCP
  23. Добавление Progressbar в Python
  24. Создание графиков в терминале
  25. Методы __repr__ и __str__ в Python
  26. Работа с кортежами
  27. Проверка дублей в списке.
  28. Python и Юникод: работа с цифрами
  29. Проверка запуска скрипта или импорта модуля
  30. Метод сравнения объектов в Python
  31. Структуры данных в Python
  32. Создание именованных кортежей в Python
  33. Оператор += для объединения строк
  34. Блок try…finally в Python
  35. Оператор walrus в Python
  36. Вычисление времени выполнения
  37. Цикл for с enumerate() в Python
  38. Создание и обучение модели с Keras
  39. Работа с файловой системой в Python
  40. Декоратор Ajax required
  41. Метод difference_update() — разность множеств
  42. Непрерывная проверка в Python
  43. Метод __call__ в Python
  44. Преобразование объекта в строку
  45. Magic Commands — улучшение работы с Python
  46. Логирование в Python
  47. Создание и использование ChainMap
  48. Удаление элемента из списка в Python

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