파이썬 OrderedDict
Python OrderedDict는 항목 삽입 순서를 유지하는 dict 하위 클래스입니다. OrderedDict를 반복하면 항목이 삽입된 순서대로 반환됩니다. 일반 사전은 삽입 순서를 추적하지 않습니다. 따라서 반복할 때 항목이 임의의 순서로 반환됩니다. 항목이 삽입된 순서대로 반환되도록 하려면 OrderedDict를 사용할 수 있습니다.
파이썬 OrderedDict
- OrderedDict는 파이썬 컬렉션 모듈의 일부입니다.
- 빈
OrderedDict
를 만들고 여기에 항목을 추가할 수 있습니다. dict 인수를 전달하여 OrderedDict를 생성하면 dict가 삽입 순서를 유지하지 않기 때문에 순서가 손실될 수 있습니다. - OrderedDict에서 항목을 덮어쓰면 위치가 유지됩니다.
- 항목을 삭제했다가 다시 추가하면 마지막으로 이동합니다.
- OrderedDict
popitem
은 FIFO 순서로 항목을 제거합니다. 부울 인수last
를 허용하며True
로 설정하면 항목이 LIFO 순서로 반환됩니다. move_to_end
함수를 사용하여 OrderedDict의 시작 또는 끝으로 항목을 이동할 수 있습니다. 부울 인수last
를 허용합니다.False
로 설정되면 항목이 순서가 지정된 dict의 시작 부분으로 이동합니다.- Python 3.6부터 순서는 OrderedDict 생성자에 전달된 키워드 인수에 대해 유지됩니다. PEP-468을 참조하세요.
reversed()
함수를 OrderedDict와 함께 사용하여 요소를 역순으로 반복할 수 있습니다.- OrderedDict 개체 간의 동등성 테스트는 순서에 민감하며
list(od1.items())==list(od2.items())
로 구현됩니다. - OrderedDict와 다른 Mapping 객체 간의 동등성 테스트는 일반 사전처럼 순서를 구분하지 않습니다. 이를 통해 일반 사전이 사용되는 모든 곳에서 OrderedDict 개체를 대체할 수 있습니다.
Python OrderedDict 예제
Python OrderedDict의 몇 가지 코드 예제를 살펴보겠습니다.
OrderedDict 객체 생성
from collections import OrderedDict
# creating a simple dict
my_dict = {'kiwi': 4, 'apple': 5, 'cat': 3}
# creating empty ordered dict
ordered_dict = OrderedDict()
print(ordered_dict)
# creating ordered dict from dict
ordered_dict = OrderedDict(my_dict)
print(ordered_dict)
산출:
OrderedDict()
OrderedDict([('kiwi', 4), ('apple', 5), ('cat', 3)])
OrderedDict에서 항목 추가, 교체, 제거
# adding elements to dict
ordered_dict['dog'] = 3
# replacing a dict key value
ordered_dict['kiwi'] = 10
print(ordered_dict)
# removing and adding a value
ordered_dict.pop('kiwi')
print(ordered_dict)
ordered_dict['kiwi'] = 4
print(ordered_dict)
산출:
OrderedDict([('kiwi', 10), ('apple', 5), ('cat', 3), ('dog', 3)])
OrderedDict([('apple', 5), ('cat', 3), ('dog', 3)])
OrderedDict([('apple', 5), ('cat', 3), ('dog', 3), ('kiwi', 4)])
OrderedDict move_to_end 예
# moving apple to end and dog to start
ordered_dict.move_to_end('apple')
ordered_dict.move_to_end('dog', False)
print(ordered_dict)
산출:
OrderedDict([('dog', 3), ('cat', 3), ('kiwi', 4), ('apple', 5)])
OrderedDict 팝 항목 예
# pop last item
item = ordered_dict.popitem(True)
print(item)
print(ordered_dict)
산출:
('apple', 5)
OrderedDict([('dog', 3), ('cat', 3), ('kiwi', 4)])
OrderedDict 역방향 반복
# reversed iteration
for item in reversed(ordered_dict):
print(item)
산출:
kiwi
cat
dog
OrderedDict 평등 테스트 예제
# equality tests
d1 = {'a': 'A', 'b': 'B'}
d2 = {'b': 'B', 'a': 'A'}
od1 = OrderedDict({'a': 'A', 'b': 'B'})
od2 = OrderedDict({'b': 'B', 'a': 'A'})
print(d1 == d2)
print(od1 == od2)
print(d1 == od1)
산출:
True
False
True
GitHub 리포지토리에서 전체 예제 코드를 다운로드할 수 있습니다.
참조: 파이썬 문서