[Python] Ordered dict 이란

반응형

 

python logo

collections 라이브러리의 OrdeOrderedDict 클래스를 알아보겠습니다. python에서 딕셔너리는 key와 value의 쌍으로 이루어진 자료형입니다. ([Python] 딕셔너리: 키(key) 값(value) 바꾸기(swap) 참조) 하지만, 파이썬의 일반적인 딕셔너리는 키:값 쌍이 추가되는 순서를 기억하지 않습니다. 아래의 예시를 보겠습니다. 

 

OrderedDict 이란?

OrderedDict은 삽입된 순서를 기억하는 딕셔너리 자료형입니다. 딕셔너리 자료형과 대부분 동일하며, 삽입된 순서 그대로 갖는다는 특징이 있습니다. 

di = dict()
di['a'] = 1
di['c'] = 2
di['b'] = 3
print(di)

dict 출력

from collections import OrderedDict

or_di = OrderedDict()
or_di['a'] = 1
or_di['c'] = 2
or_di['b'] = 3
print(or_di)

OrderedDict 출력

일반 dictionary는 삽입된 순서로 출력되지 않았습니다. 위에는 a, b, c 순서로 출력되었지만, 사실상 무작위에 가깝습니다. 반대로 OrderedDict는 삽입된 순서를 기억하고 있는 것을 볼 수 있습니다.

 

OrderedDict의 메서드

popitem(last=True)

입력 인자 입력자료형 설명
last bool(True or False) 마지막 item을 pop할지, 첫 item을 pop할지 결정한다.

사용 형식)

or_di.popitem()
or_di.popitem(last=False)

사용 예시)

예시

popitem 메서드의 default value는 last=True이기 때문에 그냥 popitem()을 사용하였을 때, 마지막 인자를 pop 합니다. pop이란 해당 인자를 뽑아 출력한다는 의미입니다. popitem(last=False)를 실행하면 OrderedDict의 첫 번째 인자를 pop 하게 됩니다. 마지막 셀을 보면 첫 번째와 마지막 인자가 빠져나와 ('c',2)만 남아있는 것을 볼 수 있습니다.

 

move_to_end(key, last=True)

입력 인자 입력자료형 설명
key 딕셔너리의 key값 key값을 입력받아 딕셔너리의 마지막 혹은 처음으로 이동 시킨다.
last bool(True or False) key값을 마지막으로 옮길지, 처음으로 옮길지 결정한다.

사용 형식)

or_di.move_to_end('a')
or_di.move_to_end('a',last=False)

사용 예시)

or_di = OrderedDict(zip('abcde',range(4)))

키로 abcde를 갖고, 값으로 01234를 갖는 OrderedDict를 생성하였습니다.

move_to_end 사용법

두 번째 셀에서 key 값으로 'a'를 갖는 key:value 쌍을 마지막으로 옮겼습니다. 세 번째 셀에서 last=False를 사용하여 ('a',0)을 다시 첫 번째로 옮겼습니다.

 

Python logo: https://ourcodeworld.com/articles/read/734/why-is-python-the-future-of-programming
코드 실행 결과 github : github.com/netsus/python_practice/blob/master/python_practice_3_Ordered_dict.ipynb
 

netsus/python_practice

basic python course. Contribute to netsus/python_practice development by creating an account on GitHub.

github.com

 

반응형

댓글

Designed by JB FACTORY