🌈 파이썬 딕셔너리(Dictionary) 정렬 하기
파이썬에서 딕셔너리를 정렬하기 위한 가장 쉬운 방법은 sorted 메서드를 사용하는 것이다.
1️⃣ Key 기준 정렬
◾ Case 1 : Key를 오름차순하여 Key만 리스트로 반환
dic = {'e': 1, 'a': 3, 'b': 5, 'c': 1, 'd': 2, }
dic = sorted(dic)
print(dic) #['a', 'b', 'c', 'd', 'e']
위와 같이 아무런 옵션 없이 sorted 했을 경우 Key만을 정렬한 리스트를 반환한다.
◾ Case 2 : Key를 오름차순하여 튜플 형태로 (Key, Value) 반환
dic = {'e': 1, 'a': 3, 'b': 5, 'c': 1, 'd': 2, }
dic = sorted(dic.items())
print(dic) #[('a', 3), ('b', 5), ('c', 1), ('d', 2), ('e', 1)]
이 경우에는 items()라는 딕셔너리의 메서드를 사용하였다.
items() 메서드를 사용하면 딕셔너리의 키와 값의 쌍을 반환해준다.
또한 결과로 Key를 기준으로 정렬한 튜플이 담긴 리스트를 반환한다.
◾ Case 3 : Key를 내림차순하여 튜플 형태로 (Key, Value) 반환
dic = {'e': 1, 'a': 3, 'b': 5, 'c': 1, 'd': 2, }
dic = sorted(dic.items(), reverse = True)
print(dic) #[('e', 1), ('d', 2), ('c', 1), ('b', 5), ('a', 3)]
이 경우에는 reverse 옵션을 주어 Case2를 뒤집은 값을 반환한다.
2️⃣ Value 기준 정렬
◾ Case 1 : Value를 오름차순하여 튜플 형태로 (Key, Value) 반환
dic = {'e': 1, 'a': 3, 'b': 5, 'c': 1, 'd': 2, }
dic = sorted(dic.items(), key = lambda x: x[1])
print(dic) # [('e', 1), ('c', 1), ('d', 2), ('a', 3), ('b', 5)]
이 경우에는 딕셔너리에 담겨있는 순서 그대로 value만을 정렬한 값을 반환한다.
◾ Case 2 : Value를 오름차순 후, Key를 오름차순하여 튜플 형태로 (Key, Value) 반환
dic = {'e': 1, 'a': 3, 'b': 5, 'c': 1, 'd': 2, }
dic = sorted(dic.items(), key = lambda x: (x[1], x[0]))
print(dic) # [('c', 1), ('e', 1), ('d', 2), ('a', 3), ('b', 5)]
이 경우에는 value를 기준으로 정렬한 후 다시 key를 기준으로 정렬한 값을 반환한다.
reverse 옵션을 줄 경우 case2의 결과를 뒤집은 값을 반환한다.
◾ Case 3 : Value를 내림차순 후, Key를 오름차순하여 튜플 형태로 (Key, Value) 반환
dic = {'e': 1, 'a': 3, 'b': 5, 'c': 1, 'd': 2, }
dic = sorted(dic.items(), key = lambda x: (-x[1], x[0]))
print(dic) #[('b', 5), ('a', 3), ('d', 2), ('c', 1), ('e', 1)]
이 경우에는 value를 기준으로 역순으로 정렬한 후 다시 key를 기준으로 정렬한 값을 반환한다.
reverse 옵션을 줄 경우 case2의 결과를 뒤집은 값을 반환하며 case1의 결과와 같다.
📌 참고사이트
https://stackoverflow.com/questions/15371691/how-to-sort-a-dictionary-by-value-desc-then-by-key-asc
'Backend > Python' 카테고리의 다른 글
[Python] 파이썬 집합 연산자 사용 하기 (0) | 2022.11.01 |
---|---|
[Python] 파이썬 올림, 내림, 반올림, 소수점 자르기 (0) | 2022.10.28 |
[Python] 우선순위 큐(PriorityQueue) 사용 방법 (0) | 2022.10.25 |
[Python] 덱(Deque) 사용 방법 정리 (0) | 2022.10.14 |
[Python] sort( )와 sorted( ) 의 차이 (1) | 2022.10.04 |
최근댓글