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

조회수 12915회

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

1 답변

  • 좋아요

    1

    싫어요
    채택 취소하기

    파이썬 표준의 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
    

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)