본문 바로가기

프로그래머/Python

[윤성우의 열혈 파이썬 중급편] 17. dict & OrderedDict

출처 : 윤성우의 열혈 파이썬 : 중급

17. dict & OrderedDict

dict은 저장 순서를 유지하기 시작했다

from colletions import OrderedDict
od = OrderedDict()
od['a'] = 1
od['b'] = 2
od['c'] = 3

for kv in od.items():
    print(kv)
  • python 3.7부터 dict가 저장순서를 유지하기 때문에 OrderedDict을 이러한 목적으로 사용할 필요는 없다

그래도 OrderedDict을 써야할 이유가 있다면?

d1 = dict(a = 1, b = 2, c = 3)
d2 = dict(c = 3, a = 1, b = 2)
print(d1 == d2)     # True, d1과 d2는 저장순서는 다르고 내용물은 같다

od1 = OrderedDict(a = 1, b = 2, c = 3)
od2 = OrderedDict(c = 3, a = 1, b = 2)
print(od1 == od2)   # False
  • OrderedDict 객체 비교에 있어서는 저장 순서도 중요하다
  • 딕셔너리의 저장 순서가 객체 구분에 영향을 갖는 상황이면 OrderedDict을 사용

저장 순서를 맨 끝 또는 앞으로 이동

from collections import OrderedDict
od = OrderedDict(a = 1, b = 2, c = 3)
for kv in od.items():
    print(kv, end = ' ')

od.move_to_end('b')     # 키가 'b'인 값을 맨 뒤로 이동

od.move_to_end('b', last = False)   # 매개변수 last에 False 전달하면 맨 앞으로 이동