Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python의 OrderedDict

<시간/>

OrderedDict는 Python에서 dict 객체의 하위 클래스입니다. OrderedDict와 dict의 유일한 차이점은 OrderedDict에서 삽입된 키의 순서를 유지한다는 것입니다. dict에서 순서는 일어날 수도 있고 일어나지 않을 수도 있습니다.

OrderedDict는 컬렉션에 있는 표준 라이브러리 클래스입니다. 모듈.

처음에 사용하려면 컬렉션을 가져와야 합니다. 표준 라이브러리 모듈.

import collections

이 섹션에서는 OrderedDict에 대한 몇 가지 작업과 OrderedDict와 Dict의 차이점을 볼 것입니다.

Dict 및 OrderedDict에 몇 가지 키와 값을 넣을 수 있습니다. 이 예에서 우리는 Dict의 순서가 다를 수 있음을 알 수 있습니다. 그러나 OrderedDict의 경우. 수정될 것입니다.

예시 코드

import collections
#Create normal dict
my_dict = {}
my_dict['AA'] = 11
my_dict['BB'] = 22
my_dict['CC'] = 33
my_dict['DD'] = 44
for item in my_dict.items():
   print(item)
print()
#Create ordered dict
my_ord_dict = collections.OrderedDict()
my_ord_dict['AA'] = 11
my_ord_dict['BB'] = 22
my_ord_dict['CC'] = 33
my_ord_dict['DD'] = 44
for item in my_ord_dict.items():
   print(item)

출력

('AA', 11)
('CC', 33)
('BB', 22)
('DD', 44)

('AA', 11)
('BB', 22)
('CC', 33)
('DD', 44)

지정된 키 값 변경

지정된 키의 값이 변경되면 OrderedDict에 대한 키의 순서는 변경되지 않습니다. 문이 Dict 유형 개체에 대해 참일 수도 있고 아닐 수도 있음을 알 수 있습니다.

예시 코드

import collections
#Create normal dict
my_dict = {}
my_dict['AA'] = 11
my_dict['BB'] = 22
my_dict['CC'] = 33
my_dict['DD'] = 44
for item in my_dict.items():
   print(item)
#Change the value for key BB
my_dict['BB'] = 100
print('After changing in Dict')
for item in my_dict.items():
   print(item)
print()
#Create ordered dict
my_ord_dict = collections.OrderedDict()
my_ord_dict['AA'] = 11
my_ord_dict['BB'] = 22
my_ord_dict['CC'] = 33
my_ord_dict['DD'] = 44
for item in my_ord_dict.items():
   print(item)
#Change the value for key BB
my_ord_dict['BB'] = 100
print('After changing in Ordered Dict')
for item in my_ord_dict.items():
   print(item)

출력

('AA', 11)
('BB', 22)
('CC', 33)
('DD', 44)
After changing in Dict
('AA', 11)
('CC', 33)
('DD', 44)
('BB', 100)

('AA', 11)
('BB', 22)
('CC', 33)
('DD', 44)
After changing in Ordered Dict
('AA', 11)
('BB', 100)
('CC', 33)
('DD', 44)

OrderedDict에서 요소 삭제 및 다시 삽입

하나의 요소가 OrderedDict에서 삭제되고 해당 키와 값에 대해 다시 삽입 작업을 수행하면 뒤로 푸시됩니다. 삽입하는 동안 순서를 유지하다가 삭제를 위해 순서 정보를 제거하고 다시 삽입을 위한 새 항목으로 처리합니다.

예시 코드

import collections
#Create ordered dict
my_ord_dict = collections.OrderedDict()
my_ord_dict['AA'] = 11
my_ord_dict['BB'] = 22
my_ord_dict['CC'] = 33
my_ord_dict['DD'] = 44
for item in my_ord_dict.items():
   print(item)
#Delete item in key BB
my_ord_dict.pop('BB')
print('After Deleting')
for item in my_ord_dict.items():
   print(item)
#re-inserting item 
my_ord_dict['BB'] = 22
print('After Re-inserting')
for item in my_ord_dict.items():
   print(item)    

출력

('AA', 11)
('BB', 22)
('CC', 33)
('DD', 44)
After Deleting
('AA', 11)
('CC', 33)
('DD', 44)
After Re-inserting
('AA', 11)
('CC', 33)
('DD', 44)
('BB', 22)