dict & OrderdDict

김건우·2021년 12월 22일
0

파이썬

목록 보기
17/18
post-thumbnail

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

딕셔너리는 저장 순서를 유지한다.(파이썬 버전 3.7부터)

d = {}
d['a'] = 1
d['b'] = 2
d['c'] = 3
d
> {'a' : 1, 'b' : 2, 'c' : 3}
for kv in d.items():
	print(kv)
> ('a',1)
> ('b',2)
> ('c',3)

딕셔너리는 순서를 정보(information)로 받아들이지 않는다.

{ a = 1, b = 2, c = 3 } = { b = 2, c = 3, a = 1}

Ordered Dict

from collections import OrderedDict
od = OrderedDict()		# OrderedDict 객체 생성
od['a'] = 1
od['b'] = 2
od['c'] = 3
od
> OrderedDict([('a',1),('b',2),('c',3)])
for kv in od.items():	# 딕셔너리와 마찬가지로 items 메소드 호출 가능
	print(kv)
> ('a',1)
> ('b',2)
> ('c',3)

OrderedDict은 순서를 정보로 받아들인다.

허나 이제는 dict이 저장 순서를 유지하므로 OrderedDict을 이러한 목적을 사용할 필요가 없다.

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

d1 = dict(a = 1, b = 2, c = 3)
d2 = dict(c = 3, a = 1, b = 2)
d1 == d2
> True

[OrderedDict]

from collections import OrderedDict
od1 = OrderedDict(a = 1, b = 2, c = 3)
od2 = OrderedDict(c = 3, a = 1, b = 2)
od1 == od2
> False

위와 같이 dict과 OrderedDict의 차이점은 저장 순서를 정보로 받아들이는지에 대한 유무이다.

from collections import OrderedDict
od = OrderedDict(a = 1, b = 2, c = 3)
for kv in od.items():
	print(kv, end = ' ')
> ('a',1) ('b',2) ('c',3)
od.move_to_end('b', last = False)	# 키가 'b'인 키와 값을 맨뒤로 이동
for kv in od.items():
	print(kv, end = ' ')
> ('b',2) ('a',1) ('c',3)
profile
공부하는 개발자가 목표입니다.

0개의 댓글