OrderedDict в Python

Структуры данных являются важными компонентами любого языка программирования, которые эффективно хранят данные и управляют ими. Python предоставляет множество встроенных структур данных, например списков, кортежей и словарей, которые помогают программистам создавать эффективные приложения. Словари Python хранят данные в парах ключ-значение. OrderedDict является подклассом класса dict и поддерживает порядок вставленных ключей. Это единственное различие между dict и OrderDict. Диктовка не поддерживает порядок ключей.

OrderedDict сохраняет порядок вставки ключей, и когда мы перебираем OrderedDict, он возвращает ключи в том же порядке. С другой стороны, когда итерация выполняется для dict, ключи возвращаются в случайном порядке. Однако словари теперь упорядочены в версиях Python 3.6 и выше и возвращают значения в том же порядке, в котором они были вставлены. Класс OrderedDict существует в модуле коллекций. Поэтому, чтобы использовать класс OrderedDict, сначала импортируйте модуль collections. Эта статья подробно объясняет Python OrderedDict с примерами.

 

Примеры

Давайте создадим OrderedDict в нашем скрипте Python и добавим данные в виде ключей и значений. Items() — это встроенная функция Python, которая возвращает информацию о ключах и значениях.

# импорт модуля коллекций



import collections



# создание OrderedDict



my_dict = collections.OrderedDict()



my_dict["A"]=1



my_dict["B"]=2



my_dict["C"]=3



my_dict["D"]=4



# объявление цикла for для перебора OrderDict



for i in my_dict.items():



print(i)




В выводе можно заметить, что OrderedDict возвращает ключи и значения в том же виде, что и вставленные.

Теперь давайте создадим еще один OrderDict студента и сохраним в нем информацию о студенте.

# импорт модуля



import collections



# создание OrderedDict студента



std_dict = collections.OrderedDict()



std_dict['name']='AndreyEx'



std_dict['age']=23



std_dict['email']='AndreyEx@example.ru'



std_dict['class']='BS'



# объявление цикла for для перебора OrderDict



for i in std_dict.items():



print(i)




Изменение значений ключей

Мы можем изменить значение конкретного ключа OrderedDict. Если мы изменим значение любого конкретного ключа, порядок ключей останется таким же в OrderDict. Давайте изменим значение возраста в студенте OrderDict.

# импорт модуля коллекций



import collections



# создание OrderedDict студента



std_dict = collections.OrderedDict()



std_dict['name']='AndreyEx'



std_dict['age']=23



std_dict['email']='AndreyEx@example.ru'



std_dict['class']='BS'



print ( "Порядок ключей перед изменением значения возраста: "



for i in std_dict.items():



print(i)



# изменение значения возраста



std_dict['age']=25



print ( "Порядок ключей после изменения значения возраста:" )



for i in std_dict.items():



print(i)




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

 

Удаление значения из OrderedDict

Удаление значений из OrderDict не меняет порядок ключей. Если мы удалим определенный ключ и снова вставим его, он будет добавлен в конце. Давайте посмотрим на пример. Мы удалим ключ «возраст» из студенческого словаря, а затем снова вставим его.

# импорт модуля коллекций



import collections



# создание OrderedDict студента



std_dict = collections.OrderedDict()



std_dict['name']='AndreyEx'



std_dict['age']=23



std_dict['email']='AndreyEx@example.ru'



std_dict['class']='BS'



print ( "Порядок ключей перед изменением значения возраста: "



for i in std_dict.items():



print(i)



# удаление ключа возраста



del std_dict['age']



print ( "Порядок ключей после удаления ключа возраста:" )



for i in std_dict.items():



print(i)



# повторная вставка ключа возраста и значения



std_dict['age']=23



print ( "Порядок ключей после повторной вставки ключа возраста:")



for i in std_dict.items():



print(i)




В выводе можно увидеть, что когда мы повторно вставляем ключ, он вставляется в конце.

 

Вывод

OrderedDict — это подкласс dict, который упорядочивает ключи по порядку и сохраняет порядок при их вставке. Класс OrderedDict является частью модуля коллекций. Эта статья объясняет OrderedDict и его функциональные возможности с примерами.



2020-11-28T16:49:06
Новости