출처 : 윤성우의 열혈 파이썬 : 중급
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 전달하면 맨 앞으로 이동
'프로그래머 > Python' 카테고리의 다른 글
[윤성우의 열혈 파이썬 중급편] 19. 정렬 기술 (0) | 2020.12.24 |
---|---|
[윤성우의 열혈 파이썬 중급편] 18. 자료형 분류와 set & frozenset (0) | 2020.12.24 |
[윤성우의 열혈 파이썬 중급편] 16. dict & defaultdict (0) | 2020.12.24 |
[윤성우의 열혈 파이썬 중급편] 15. 함수 호출과 매개변수 선언에 있어서 *와 **의 사용 규칙 (0) | 2020.12.24 |
[윤성우의 열혈 파이썬 중급편] 14. dict의 루핑 기술과 컴프리헨션 (0) | 2020.12.24 |