Python OrderedDict

Python OrderedDict는 항목 삽입 순서를 유지하는 dict 하위 클래스입니다. OrderedDict를 반복할 때 항목은 삽입된 순서대로 반환됩니다. 일반적인 사전은 삽입 순서를 추적하지 않습니다. 따라서 반복할 때 항목은 임의의 순서로 반환됩니다. 항목이 삽입된 순서대로 반환되어야 하는 경우 OrderedDict를 사용할 수 있습니다.

Python OrderedDict

  • OrderedDict는 파이썬 collections 모듈의 일부입니다.
  • OrderedDict를 생성한 후 항목을 추가할 수 있습니다. dict 인수를 전달하여 OrderedDict를 생성하면 순서가 손실될 수 있습니다. dict는 삽입 순서를 유지하지 않기 때문입니다.
  • OrderedDict에서 항목이 덮어쓰여지면 해당 항목의 위치는 유지됩니다.
  • 항목이 삭제되고 다시 추가되면 마지막으로 이동합니다.
  • OrderedDict의 popitemFIFO 순서로 항목을 제거합니다. last라는 부울 인수를 받으며, True로 설정되면 항목은 LIFO 순서로 반환됩니다.
  • 우리는 move_to_end 함수를 사용하여 항목을 OrderedDict의 시작이나 끝으로 이동할 수 있습니다. 이 함수는 부울 인수 last를 받습니다. 만약 False로 설정된 경우 항목은 순서가 지정된 딕셔너리의 시작으로 이동됩니다.
  • Python 3.6부터는 OrderedDict 생성자에 전달된 키워드 인수의 순서가 유지됩니다. 이에 대한 자세한 내용은 PEP-468을 참조하십시오.
  • reversed() 함수를 OrderedDict와 함께 사용하여 요소를 역순으로 반복할 수 있습니다.
  • OrderedDict 객체 간의 동등성 테스트는 순서에 민감하며 list(od1.items())==list(od2.items())로 구현됩니다.
  • OrderedDict와 다른 매핑 객체 간의 동등성 테스트는 순서에 민감하지 않으며 일반 딕셔너리처럼 작동합니다. 이는 OrderedDict 객체를 일반 딕셔너리가 사용되는 모든 곳에 대체할 수 있도록 합니다.

Python OrderedDict 예제

Python OrderedDict의 몇 가지 코드 예제를 살펴보겠습니다.

OrderedDict 객체 생성하기

from collections import OrderedDict

# 간단한 딕셔너리 생성
my_dict = {'kiwi': 4, 'apple': 5, 'cat': 3}

# 비어 있는 ordered dict 생성
ordered_dict = OrderedDict()
print(ordered_dict)

# dict로부터 ordered dict 생성
ordered_dict = OrderedDict(my_dict)
print(ordered_dict)

결과:

OrderedDict()
OrderedDict([('kiwi', 4), ('apple', 5), ('cat', 3)])

OrderedDict에 항목 추가, 교체, 제거하기

# 사전에 요소 추가하기
ordered_dict['dog'] = 3

# 사전 키 값 교체하기
ordered_dict['kiwi'] = 10
print(ordered_dict)

# 값 제거 및 추가하기
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 예제

# 사과를 끝으로, 개를 시작으로 이동
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 popitem 예제

# 마지막 항목 추출
item = ordered_dict.popitem(True)
print(item)
print(ordered_dict)

출력:

('apple', 5)
OrderedDict([('dog', 3), ('cat', 3), ('kiwi', 4)])

OrderedDict 역순 반복

# 역순 반복
for item in reversed(ordered_dict):
    print(item)

출력:

kiwi
cat
dog

OrderedDict 동등성 테스트 예제

# 동등성 테스트
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 저장소에서 다운로드할 수 있습니다.

참고: Python 문서

Source:
https://www.digitalocean.com/community/tutorials/python-ordereddict