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

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

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
    

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

작성한 답변에 다른 개발자들이 댓글을 작성하거나 댓글에 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.