Вебинары Разобраться в IT Реферальная программа
Программирование Аналитика Дизайн Маркетинг
07 Июл 2023
2 мин
224

Упорядоченность словарей в Python 3.6 и выше

Одной из общих проблем, с которой сталкиваются начинающие программисты на Python, является вопрос о порядке элементов в словарях. В простых словах, словарь

Одной из общих проблем, с которой сталкиваются начинающие программисты на Python, является вопрос о порядке элементов в словарях. В простых словах, словарь в Python — это неупорядоченная коллекция элементов. Каждый элемент представляет собой пару ключ-значение.

Рассмотрим простой пример:

my_dict = {'apple': 1, 'banana': 2, 'cherry': 3}

В этом словаре ‘apple’, ‘banana’ и ‘cherry’ являются ключами, а 1, 2 и 3 — их соответствующие значения. Важно отметить, что в словаре нет никакого порядка, то есть элементы не упорядочены в том порядке, в котором они были добавлены.

Однако, начиная с версии Python 3.6, словари внутри Python упорядочены по порядку вставки. Это означает, что элементы сохраняют порядок, в котором они были впервые добавлены в словарь. Вернемся к нашему примеру и попробуем добавить еще один элемент:

my_dict['date'] = 4

Если снова посмотреть на словарь, мы увидим, что новый элемент (‘date’: 4) добавлен в конец словаря:

print(my_dict)
# Output: {'apple': 1, 'banana': 2, 'cherry': 3, 'date': 4}

Это нововведение в Python 3.6 было вдохновлено «компактным» представлением словарей, которое первоначально было разработано в PyPy. Это новое представление словарей не только упорядочивает элементы по порядку вставки, но и делает использование памяти на 20-25% меньше по сравнению с Python 3.5.

Тем не менее, стоит заметить, что хоть и словари в Python 3.6 и выше упорядочены, этот порядок считается деталью реализации, на которую не следует полагаться. Поэтому, при написании кода, всегда стоит иметь в виду, что порядок элементов в словаре может измениться.

В декабре 2017 года было официально подтверждено, что сохранение порядка вставки элементов в словарях станет гарантированным для Python 3.7 и выше. Это означает, что в новых версиях Python порядок элементов в словарях будет всегда сохраняться, независимо от того, какие операции выполняются над словарем.

Добавить комментарий