파이썬 딕셔너리 소팅하기

dict에서 키가 아닌 값으로 소팅하고 싶습니다 DB에서 2개 필드(string value, numeric value 하나씩)를 읽어 dictionary x = {'1': 2, '3': 4, '4': 3, '2': 1, '0': 0} 를 만들었습니다. string은 유니크한 키이고 numeric은 그렇지 않습니다. string 기준으로는 소팅할 수 있는데 numeric으로는 소팅하는 방법을 모르겠어요. 어떻게 해야되나요?

1답변

  • 좋아요

    0

    싫어요
    채택취소하기

    dict는 리스트나 튜플이랑은 다르게 순서가 없습니다. 따라서 dict 타입은 소팅할 수 없기때문에, dict를 소팅하고 싶다면 dict를 튜플의 리스트로 표현해야 합니다.

    예를들어. 키가 아닌 값으로 소팅 하고 싶다면

    import operator
    x = {'1': 2, '3': 4, '4': 3, '2': 1, '0': 0}
    sorted_x = sorted(x.items(), key=operator.itemgetter(1))
    

    이 경우 sorted_x 는 2번째 요소를 기준으로 소팅된 튜플들의 리스트이고.

    dict(sorted_x) 는 x랑 같습니다.

    키로 소팅하고 싶다면 다음과 같이 쓸 수 있습니다.

    import operator
    x = {1: 2, 3: 4, 4: 3, 2: 1, 0: 0}
    sorted_x = sorted(x.items(), key=operator.itemgetter(0))
    

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

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