파이썬에서 딕셔너리 정렬
파이썬 딕셔너리(dict)를 정렬(sort)하는 방법입니다. sorted() 함수를 사용하는데, 딕셔너리는 키(key)와 값(value)의 쌍으로 구성되어 있기 때문에 키를 기준으로 정렬할 것인지 또는 값을 기준으로 정렬할 것인지에 따라 방법이 달라집니다.
우선 키를 기준으로 정렬하는 경우를 보겠습니다.
x = { 'a':10, 'c':5, 'b':7 }
print(sorted(x))
['a','b','c']
딕셔너리를 sorted() 함수에 인자로 넣으면 키만 정렬된 채로 가져오게 됩니다. 키와 값을 모두 가져오려면 딕셔너리의 원소를 튜플로 바꾸기 위해 아래와 같이 items() 함수를 사용합니다.
x_s = sorted(x.items())
print(x_s)
[('a', 10), ('b', 7), ('c', 5)]
키를 기준으로 정렬된 것을 볼 수 있습니다. 그러므로 이 결과를 다시 딕셔너리로 바꾸면 되겠습니다.
x_sorted_by_key = dict(sorted(x.items()))
print(x_sorted_by_key)
{'a': 10, 'b': 7, 'c': 5}
값을 기준으로 정렬하는 것은 조금 더 복잡합니다. sorted() 함수에서 어떤 값을 기준으로 정렬할 것인지 지정하기 위해 key 옵션을 사용하고 여기에 위에서 변환한 튜플의 두번째 원소(인덱스 1)를 지정해야 합니다.
x_sorted_by_val = dict(sorted(x.items(), key=lambda i:i[1]))
print(x_sorted_by_val)
{'c': 5, 'b': 7, 'a': 10}
sorted() 함수의 key 옵션에 람다 함수를 이용해서 튜플의 인덱스 1번, 즉 딕셔너리의 값을 기준으로 정렬하도록 했습니다.
@joviansummer의 스팀 프로젝트
스팀 증인노드를 운영중입니다. @jswit에 증인투표해 주시면 감사하겠습니다.
(https://steemitwallet.com/~witnesses)
jsup 서비스에 큐레이션 보상 분배 기능이 추가되었습니다.
jSTEEM 프로젝트 - 텔레그램 챗봇으로 구현하는 스팀 블럭체인 탐색기
Posted through the AVLE Dapp (https://avle.io)
Thank you, friend!


I'm @steem.history, who is steem witness.
Thank you for witnessvoting for me.
please click it!
(Go to https://steemit.com/~witnesses and type fbslo at the bottom of the page)
The weight is reduced because of the lack of Voting Power. If you vote for me as a witness, you can get my little vote.
Upvoted! Thank you for supporting witness @jswit.