Курс 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. Удаление специальных символов
  4. Python Enumerate
  5. Считывание бинарного файла в Python
  6. Метод bool() в Python
  7. Поиск файлов по шаблону
  8. Оператор space-invader
  9. Работа с timedelta
  10. Метод join() с набором
  11. Сортировка в Python
  12. Автоматизация скриптов на AWS Lightsail.
  13. Метод add для класса Vector
  14. Создание словарей и множеств в Python.
  15. Синхронизация потоков с time.sleep()
  16. Python Метод del.
  17. Безопасный доступ к значениям словаря
  18. Методы работы со списками
  19. Python и Монти Пайтон
  20. Тайное преобразование типа ключа
  21. Использование обратной косой черты в f-строках
  22. Тестирование модели в PyTorch
  23. Сравнение строк в Python
  24. Создание списков в Python
  25. Лямбда-функции в цикле
  26. Копирование словарей и списков в Python
  27. Метод split() для разделения строк
  28. Функция zip() в Python
  29. SciPy: широкий функционал для математических операций
  30. Открытие и запись файлов
  31. Преобразование строки в число
  32. Поиск элементов BeautifulSoup
  33. Оператор in для проверки наличия элемента
  34. Удаление ресурса в Python
  35. Генераторы в Python
  36. Логические значения в Python
  37. Аннотации типов в Python
  38. Основы Python
  39. Функция enumerate() в Python
  40. Структура данных deque в Python
  41. Выключение компьютера с помощью Python
  42. Проблемы с dict в Python
  43. Переменная Шредингера
  44. Преобразование символов в нижний регистр

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