OrderedDict
는 삽입된 순서를 보존하는 기능을 추가한 일종의 dict
임.
collections
모듈에서 제공.- Python 3.7부터 built-in
dict
도 삽입 순서를 보존하게 되었음. - 하지만
OrderedDict
는 그 외에 몇 가지 중요한 추가 기능을 다음과 같이 제공함
데이터의 순서가 중요한 경우나, cache처럼 삽입/제거 순서에 따라 다른 제어가 필요한 경우에 사용되는 데이터 구조임.
가장 유명한 활용처 중 하나는 PyTorch에서 모델 및 파라메터를 저장/로드 하는 데 사용되는 경우임.
0. 순서 유지
Python 3.7부터는 dict도 순서를 유지함.
from collections import OrderedDict
# OrderedDict 생성
print("=== OrderedDict 생성 및 기본 작업 ===")
od = OrderedDict([('a', 1), ('b', 2), ('c', 3)])
print("초기 OrderedDict:", od)
# 항목 추가
od['d'] = 4
print("항목 추가 후:", od)
1. move_to_end()
메서드:
- 특정 키를 사전의 맨 처음이나 맨 끝으로 이동시킬 수 있음.
from collections import OrderedDict
d = OrderedDict([('a', 1), ('b', 2), ('c', 3)])
d.move_to_end('b') # 'b'를 맨 끝으로 이동
print(d) # OrderedDict([('a', 1), ('c', 3), ('b', 2)])
d.move_to_end('a', last=False) # 'a'를 맨 앞으로 이동
print(d) # OrderedDict([('a', 1), ('c', 3), ('b', 2)])
2. 등가성(equality) 비교 방식:
OrderedDict
는 일반dict
와 달리 항목의 순서까지 고려하여 비교.
from collections import OrderedDict
od1 = OrderedDict([('a', 1), ('b', 2)])
od2 = OrderedDict([('b', 2), ('a', 1)])
print(od1 == od2) # False (순서가 다름)
# 반면 일반 dict는 순서를 고려하지 않음
d1 = {'a': 1, 'b': 2}
d2 = {'b': 2, 'a': 1}
print(d1 == d2) # True
3. popitem()
메서드
- last 매개변수를 통해 마지막 항목(기본값) 또는 첫 번째 항목을 제거할 수 있음.
from collections import OrderedDict
d = OrderedDict([('a', 1), ('b', 2), ('c', 3)])
d.popitem() # 마지막 항목 ('c', 3) 제거
d.popitem(last=False) # 첫 번째 항목 ('a', 1) 제거
같이보면 좋은 자료들
2025.04.04 - [Python] - [Py] collections 모듈 (summary) - 작성중
[Py] collections 모듈 (summary) - 작성중
Python의 collections 모듈은 파이썬의 built-in 자료구조를 확장한 special container 클래스들을 제공함.1. Counter요소의 개수를 세는 dictionary의 subclass.해시 가능한 객체의 카운트를 저장함.from collections impor
ds31x.tistory.com
'Python' 카테고리의 다른 글
[Py] collections.ChainMap (0) | 2025.04.04 |
---|---|
[Py] collections.namedtuple-Factory Function (0) | 2025.04.04 |
[Py] collections 모듈 (summary) - 작성중 (0) | 2025.04.04 |
[Py] print 함수 (0) | 2025.04.02 |
[PyTorch] autograd 심화: grad_fn 과 custom operation 만들기 (0) | 2025.03.28 |