Python에서 값을 기준으로 사전을 정렬하는 방법

값을 기준으로 Python 사전을 정렬하는 방법을 알아보세요. sorted(), 사용자 정의 키 람다 및 순서가 지정된 dict 구조를 사용하여 정렬을 살펴보세요.

Editor에서 이 솔루션을 사용해 보세요.

개요

사전은 주로 고유 키를 사용하여 빠른 조회 작업을 위해 구축되었지만 해당 값을 기준으로 사전 항목을 정렬해야 하는 경우가 많습니다. 예를 들어, 시험 점수를 기준으로 학생을 정렬하고, 가장 저렴한 제품부터 가장 비싼 제품까지 나열하거나, 빈도별로 단어 수를 정렬합니다.

Python에서는 표준 사전 구조가 목록과 같은 정렬 방법을 지원하지 않기 때문에 사전을 직접 정렬할 수 없습니다. 대신, 표준 접근 방식은 `.items()` 메서드를 사용하여 사전의 항목을 튜플로 검색하고, 내장된 `sorted()` 함수와 사용자 정의 정렬 키를 사용하여 해당 튜플을 정렬한 다음, 정렬된 항목에서 사전을 다시 작성하는 것입니다.

정렬 키는 일반적으로 튜플의 두 번째 요소(사전 값)인 `key=lambda item: item[1]`을 반환하는 람다 함수입니다.Python 3.7+부터 표준 사전은 삽입 순서를 유지합니다. `dict()` 생성자를 사용하여 정렬된 튜플 목록을 사전으로 다시 캐스팅하면 반복할 준비가 된 깨끗하고 정렬된 사전이 반환됩니다.

코드 및 실행 출력

이 스크립트는 람다 함수를 사용하여 오름차순 및 내림차순으로 값별로 테스트 점수 사전을 정렬하는 방법을 보여줍니다.

scores = {"Alice": 88, "Bob": 75, "Charlie": 95, "David": 82}
print("Original dictionary:", scores)

# 1. Sort by values (ascending order)
sorted_ascending = dict(sorted(scores.items(), key=lambda item: item[1]))
print("Sorted ascending:", sorted_ascending)

# 2. Sort by values (descending order)
sorted_descending = dict(sorted(scores.items(), key=lambda item: item[1], reverse=True))
print("Sorted descending:", sorted_descending)

# 3. sorting by keys for comparison
sorted_keys = dict(sorted(scores.items(), key=lambda item: item[0]))
print("Sorted by keys:", sorted_keys)
터미널 출력
Original dictionary: {'Alice': 88, 'Bob': 75, 'Charlie': 95, 'David': 82}
Sorted ascending: {'Bob': 75, 'David': 82, 'Alice': 88, 'Charlie': 95}
Sorted descending: {'Charlie': 95, 'Alice': 88, 'David': 82, 'Bob': 75}
Sorted by keys: {'Alice': 88, 'Bob': 75, 'Charlie': 95, 'David': 82}

단계별 구현

  • my_dict.items()를 호출하여 키-값 쌍을 튜플 목록으로 검색합니다.
  • 사전 항목을 sorted() 함수에 전달합니다.
  • key=lambda item: item[1]을 지정하여 sorted() 함수에 값(각 튜플의 두 번째 요소)을 기준으로 정렬하도록 지시합니다.
  • 항목을 내림차순으로 정렬하려면 reverse=True를 선택적 인수로 전달합니다.
  • 정렬된 튜플 목록을 dict() 생성자에 전달하여 정렬된 사전을 다시 빌드합니다.

자주 묻는 질문

key=lambda item: item[1]은(는) 무슨 뜻인가요?

sorted() 함수는 항목 시퀀스((키, 값)의 튜플)의 각 요소를 람다 함수에 전달합니다. item[1]은 값 구성 요소를 추출하여 Python에 값별로 튜플을 정렬하도록 지시합니다.

사전 정렬이 키 조회 속도에 영향을 줍니까?

아니요, 정렬은 기본 해시 테이블 구조가 아닌 반복 순서만 변경하기 때문에 키 조회는 O(1) 평균 시간 복잡도를 유지합니다.

관련 주제

권장 Python 리소스

관련 대화형 튜토리얼, 치트 시트, 코드 비교를 통해 지식을 확장하세요.