- 3
- 이니스프리
- 조회 수 285
파이썬의 dictionary 객체는 iterable하므로 for문으로 불러올 수 있지만,
for문에서 출력문을 돌려보면 객체에 집어넣은 순서대로가 아니라 사실상 랜덤(?)하게 저장된다는 점을 확인할 수 있습니다.
따라서 키를 집어넣은 순서대로 사용하고 싶을 때에는 OrderedDict의 사용을 고려할 수 있습니다.
사용법은 아래와 같이 collections 모듈에서 불러오시면 됩니다.
from collections import OrderedDict
dictionary 객체와 사용방법은 대동소이합니다.
다만 move_to_end() 등 메서드가 추가로 있다는 점에서 차이가 있습니다 :)
(move_to_end()는 키와 값의 순서를 이동시키는 메서드입니다.)
참고로 파이썬 3.7 이상에서는 "Dict order is guaranteed to be insertion order."라고 공홈에서 명시하고 있습니다.
그래도 사용할 수 있는 메서드에 여전히 차이가 있다는 점에서 OrderedDict가 의미를 지닌다고 하겠습니다.
주의: 키를 정렬하게 되는 경우에는 굳이 OrderedDict가 필요없고 dictionary에서 sorted를 사용하는 것을 권장합니다 ^^
그거 말고도 set이나 frozenset 도 의외로 편리하지만 손이 안가요...
https://docs.python.org/3/library/stdtypes.html#set-types-set-frozenset