파이썬에서 OrderedDict는 키-값 쌍이 추가된 순서를 기억하는 특별한 딕셔너리 클래스입니다. 일반 딕셔너리와 달리 항목이 삽입된 순서를 그대로 유지하기 때문에, 순서가 중요한 데이터를 다룰 때 매우 유용합니다.
OrderedDict란?
OrderedDict는 파이썬 표준 라이브러리의 collections 모듈에 정의되어 있으며, dict의 서브클래스입니다. 내부적으로 요소를 추가한 순서대로 저장하므로, 반복문으로 순회할 때도 항상 삽입 순서대로 출력됩니다.
기본 사용 예제
>>> from collections import OrderedDict
>>> d = {'banana': 3, 'apple': 4, 'pear': 1, 'orange': 2}
>>> od = OrderedDict(d.items())
>>> od
OrderedDict([('banana', 3), ('apple', 4), ('pear', 1), ('orange', 2)])
>>> t = od.popitem()
>>> t
('orange', 2)위 예제에서 popitem() 메서드는 마지막에 추가된 키-값 쌍을 제거하고 반환합니다. 즉, OrderedDict의 popitem()은 LIFO(Last-In, First-Out) 방식으로 동작합니다.
주요 특징과 활용
- 순서 보장: 항목을 추가한 순서가 그대로 유지되어 순회 결과가 항상 일정합니다.
- move_to_end() 메서드: 특정 키를 맨 앞이나 맨 뒤로 이동시킬 수 있습니다.
- 동등성 비교: 두 OrderedDict를 비교할 때는 값뿐만 아니라 순서까지 고려합니다.
참고: 파이썬 3.7 이상에서는?
파이썬 3.7부터는 일반 dict도 삽입 순서를 보장하도록 언어 명세에 포함되었습니다. 따라서 단순히 순서 유지만 필요하다면 일반 딕셔너리로 충분하지만, move_to_end() 같은 OrderedDict 고유 기능이나 순서를 엄격하게 비교해야 하는 경우에는 여전히 OrderedDict를 사용하는 것이 좋습니다.