[Python] 딕셔너리 정렬 및 출력하기
개요
딕셔너리 정렬에는
1. key 기준 정렬
2. value 기준 정렬
이 있다. 상황에 따라 맞게 사용한다.
key 기준 정렬
오름차순
sorted 함수를 사용하면 된다.
sorted에 딕셔너리를 넣었을 때는 딕셔너리의 key 기준으로 정렬하는 것이 default,
오름차순이 default 기 때문에 dict의 item만 넣으면 된다.
dict = sorted(dict.items())
내림차순
dict = sorted(dict.items(), reverse=True)
value 기준 정렬
value 기준 정렬은 key 기준 정렬 때보다 스킬이 필요하다.
1. lambda 활용
2. operator.itemgetter 활용
lambda 활용
dict = sorted(dict.items(), key=lambda x:x[1])
람다를 활용하여 x[1] 즉, 딕셔너리의 인덱스 1인 value 값을 정렬 기준으로 잡는다는 명시이다.
reverse 파라미터를 적용할 수 있다. (내림차순)
dict = sorted(dict.items(), key=lambda x:x[1], reverse=True)
operator.itemgetter 활용
import operator
dict= sorted(dict.items(), key=operator.itemgetter(1))
operator.itemgetter는 주로 sorted와 같은 함수의 key 파라미터에 적용되어
다중 수준의 정렬을 가능하게 해 준다.
즉, 리스트 및 배열의 특정 인덱스 기준으로 sort하게 해준다.
여기서는 딕셔너리의 인덱스 1인 value값을 기준으로 한다는 명시이다.
reverse 파라미터를 적용할 수 있다. (내림차순)
import operator
dict= sorted(dict.items(), key=operator.itemgetter(1), reverse=True)
여담
value 기준으로 정렬할 때 key 값만 얻는 목적이라면
위의 복잡한 방법 대신
dict= sorted(dict, key=dict.get)
를 이용하면 된다.
dict 자체를 sort 대상으로 넣고 .get 즉, value 자체를 key의 파라미터로 넣으면
정렬된 key 값이 리스트로 반환된다.
프로그래머스의 해당 문제를 풀다가 알게되었다.
programmers.co.kr/learn/courses/30/lessons/42889
'Python' 카테고리의 다른 글
[Python] ModuleNotFoundError: No module named '_lzma' (0) | 2024.06.26 |
---|---|
[python] RuntimeError: deque mutated during iteration (0) | 2021.04.20 |
itemgetter를 사용해서 다차원 리스트, 튜플 정렬 (0) | 2021.03.16 |
for - else문 (0) | 2021.03.14 |
댓글