파이썬 딕셔너리 소팅하기
조회수 7692회
dict에서 키가 아닌 값으로 소팅하고 싶습니다
DB에서 2개 필드(string value, numeric value 하나씩)를 읽어 dictionary
x = {'1': 2, '3': 4, '4': 3, '2': 1, '0': 0}
를 만들었습니다.
string은 유니크한 키이고 numeric은 그렇지 않습니다.
string 기준으로는 소팅할 수 있는데 numeric으로는 소팅하는 방법을 모르겠어요.
어떻게 해야되나요?
1 답변
-
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))
댓글 입력