Python에서 값을 기준으로 딕셔너리 정렬하는 방법
Lukas Schneider
DevOps Engineer · Leapcell

Key Takeaways
sorted()
와 람다를 사용하여 딕셔너리를 값으로 정렬합니다.- 내림차순 정렬을 위해
reverse=True
를 설정합니다. - 이전 Python 버전의 경우, 순서를 유지하기 위해
OrderedDict
를 사용합니다.
딕셔너리를 값으로 정렬하는 것은 Python에서 흔한 작업이며, 특히 관련 값을 기반으로 데이터를 순위 매기거나 구성해야 할 때 유용합니다. 이 가이드에서는 오름차순 및 내림차순 정렬을 모두 다루면서 이를 달성하기 위한 다양한 방법을 안내합니다.
Python 딕셔너리 이해하기
Python 딕셔너리는 키-값 쌍의 정렬되지 않은 컬렉션입니다. 딕셔너리는 Python 3.7부터 삽입 순서를 유지하지만 직접 정렬은 지원하지 않습니다. 딕셔너리를 값으로 정렬하려면 정렬된 새 표현을 만들어야 합니다.
오름차순으로 딕셔너리 값으로 정렬하기
딕셔너리를 오름차순으로 값으로 정렬하려면 람다 함수와 함께 sorted()
함수를 사용할 수 있습니다.
student_scores = { 'Alex': 88, 'Ben': 75, 'Cyrus': 93, 'Denver': 85 } sorted_scores = dict(sorted(student_scores.items(), key=lambda item: item[1])) print(sorted_scores)
출력:
{'Ben': 75, 'Denver': 85, 'Alex': 88, 'Cyrus': 93}
이 예에서:
student_scores.items()
는 딕셔너리 항목의 뷰 객체를 반환합니다.sorted()
는 각 튜플의 두 번째 요소(즉, 값)를 기준으로 이러한 항목을 정렬합니다.dict()
는 정렬된 튜플 목록을 다시 딕셔너리로 변환합니다.
내림차순으로 딕셔너리 값으로 정렬하기
딕셔너리를 내림차순으로 정렬하려면 sorted()
함수의 reverse
매개변수를 True
로 설정합니다.
sorted_scores_desc = dict(sorted(student_scores.items(), key=lambda item: item[1], reverse=True)) print(sorted_scores_desc)
출력:
{'Cyrus': 93, 'Alex': 88, 'Denver': 85, 'Ben': 75}
이 접근 방식은 최고 성과자 또는 최고 값을 식별해야 할 때 유용합니다.
operator.itemgetter
를 사용한 대체 방법
값을 기준으로 딕셔너리를 정렬하는 또 다른 방법은 operator
모듈의 itemgetter
함수를 사용하는 것입니다.
import operator sorted_scores = dict(sorted(student_scores.items(), key=operator.itemgetter(1))) print(sorted_scores)
이 방법은 특히 더 복잡한 정렬 시나리오를 다룰 때 더 효율적이고 가독성이 좋을 수 있습니다.
이전 Python 버전에 대한 고려 사항
Python 3.7 이전 버전에서는 딕셔너리가 삽입 순서를 유지하지 않습니다. 이러한 경우 정렬된 순서를 유지하려면 collections
모듈의 OrderedDict
를 사용할 수 있습니다.
from collections import OrderedDict sorted_scores = OrderedDict(sorted(student_scores.items(), key=lambda item: item[1])) print(sorted_scores)
이렇게 하면 항목의 순서가 정렬에 따라 유지됩니다.
요약
- 오름차순: 람다 함수 또는
operator.itemgetter(1)
와 함께sorted()
를 사용합니다. - 내림차순:
sorted()
함수에서reverse=True
를 설정합니다. - 이전 Python 버전: 정렬된 순서를 유지하기 위해
OrderedDict
를 사용합니다.
이러한 방법을 적용하면 다양한 데이터 처리 요구 사항을 충족하기 위해 딕셔너리를 해당 값으로 효과적으로 정렬할 수 있습니다.
FAQs
아니요, 딕셔너리는 순서 지정 측면에서 변경할 수 없습니다. 정렬은 새 딕셔너리를 반환합니다.
값이 같은 키의 경우 원래 삽입 순서가 유지됩니다.
itemgetter
는 인덱스별로 정렬할 때 약간 더 빠르고 깔끔할 수 있습니다.
저희 Leapcell은 Python 프로젝트 호스팅을 위한 최고의 선택입니다.
Leapcell은 웹 호스팅, 비동기 작업 및 Redis를 위한 차세대 서버리스 플랫폼입니다.
다국어 지원
- Node.js, Python, Go 또는 Rust로 개발하십시오.
무료로 무제한 프로젝트 배포
- 사용량에 대해서만 지불하십시오. 요청도 없고 요금도 없습니다.
타의 추종을 불허하는 비용 효율성
- 유휴 요금 없이 사용량에 따라 지불합니다.
- 예: $25는 평균 응답 시간 60ms에서 694만 건의 요청을 지원합니다.
간소화된 개발자 경험
- 간편한 설정을 위한 직관적인 UI.
- 완전 자동화된 CI/CD 파이프라인 및 GitOps 통합.
- 실행 가능한 통찰력을 위한 실시간 메트릭 및 로깅.
손쉬운 확장성 및 고성능
- 높은 동시성을 쉽게 처리하기 위한 자동 확장.
- 운영 오버헤드가 없습니다. 구축에만 집중하십시오.
설명서에서 자세히 알아보세요!
X에서 저희를 팔로우하세요: @LeapcellHQ