Курс 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. Оператор in для проверки наличия элемента
  2. Python groupby() из itertools: работа с повторяющимися элементами
  3. Метод invert для побитового отрицания
  4. Перевод текста с Python Translator
  5. GitHub в Telegram: подписка на уведомления
  6. Сортировка данных в Python
  7. Функции range() в Python
  8. Работа с модулем glob в Python
  9. Объединение списков в Python
  10. Принципы LSP и ISP в Python
  11. Преобразование данных в Python
  12. Форматирование строк с % в Python
  13. Функция enumerate в Python
  14. Создание новых функций с помощью functools.partial
  15. Генерация случайных чисел в Python
  16. Роль object и type в Python
  17. Метод radd для пользовательских чисел
  18. Проверка вхождения подстроки
  19. Ускоренный импорт библиотек
  20. Регистрация на TenChat
  21. Удаление falsy-значений из списка с помощью filter
  22. Работа с комплексными числами в Python
  23. Сортировка слиянием
  24. Открытие, чтение и закрытие файла
  25. Упрощение условных выражений с тернарным оператором
  26. Создание словаря в Python
  27. Обучение модели с указанием эпох
  28. Поиск с помощью регулярных выражений
  29. Преобразование чисел в Python
  30. Функция zip() в Python
  31. Нарезка списков в Python
  32. Очистка данных в Python
  33. Генераторы в Python
  34. Python: цикл for и оператор присваивания
  35. Разрешение имен в Python
  36. Преобразование списков в словарь
  37. Функция rsplit() в Python
  38. Функции min(), max(), sum()
  39. Работа с комплексными числами
  40. Создание виртуальной среды
  41. Изменение переменной в Python: nonlocal
  42. Руководство по Pymorphy2
  43. Функция __init__ в Python
  44. Форматирование данных с pprint
  45. Генераторы в Python
  46. Блок else в циклах Python

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