dict를 key순서대로 정렬하려면 어떻게 하나요?


{2:3, 1:89, 4:5, 3:0} ->{1:89, 2:3, 3:0, 4:5}같이 키순서대로 정렬하려면 어떻게 해야 하나요? 다른 글에서는 다들 정렬한 값으로 tuple을 return 하더라고요. 저는 tuple이 아니라 dict가 필요합니다

  • 2016년 01월 19일에 작성됨

조회수 618


1 답변


좋아요
0
싫어요
채택취소하기

파이썬 표준의 dict타입은 순서가 없습니다. 따라서 key-value 값을 어떻게 정렬하더라도, 순서를 유지하면서 dict타입으로 저장할 수는 없습니다.

그래서 dict로 순서를 유지하고 싶을 때는 collections모듈의 OrderedDict를 씁니다. *OrderedDict는 원소를 들어온 순서대로 저장합니다

import collections
d = {2:3, 1:89, 4:5, 3:0}
od = collections.OrderedDict(sorted(d.items())) #소팅하고 순서대로 ordered dict에 넣어줌
print od #OrderedDict([(1, 89), (2, 3), (3, 0), (4, 5)])
print od[1] #89
print od[3] #0

for k, v in od.iteritems(): print k, v

#파이썬 3에서는
for k, v in od.items(): print k, v
  • 2016년 01월 19일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close