웹사이트 검색

파이썬 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 리포지토리에서 전체 예제 코드를 다운로드할 수 있습니다.

참조: 파이썬 문서