본문 바로가기

라이브러리

[파이썬] sort() 리스트, 딕셔너리 정렬 방법

Python의 sort() 메소드는 리스트 형식의 데이터를 정렬하는데 사용됩니다. sort() 메소드는 리스트 내의 요소를 기본적으로 오름차순으로 정렬하며, 내림차순으로 정렬하려면 reverse=True 옵션을 추가하면 됩니다.


1. 리스트 정렬

numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]

# 오름차순으로 정렬
numbers.sort()
print(numbers) # 출력 결과: [1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]

# 내림차순으로 정렬
numbers.sort(reverse=True)
print(numbers) # 출력 결과: [9, 6, 5, 5, 5, 4, 3, 3, 2, 1, 1]

sort() 메소드는 원래 리스트를 수정하며, 새로운 리스트를 반환하지 않습니다.

또한 sort() 메소드는 기본적으로 숫자를 비롯한 대부분의 데이터 유형에 대해 작동하지만, 서로 다른 데이터 유형이 섞여있는 경우 오류가 발생할 수 있습니다. 이 경우 TypeError가 발생합니다.

mixed_list = [3, 'apple', 4, 'banana', 1]
mixed_list.sort() # TypeError 발생


따라서 sort() 메소드를 사용할 때는 리스트 내의 모든 요소가 같은 데이터 유형이어야 합니다.


2. 딕셔너리 (dictionary) 정렬


딕셔너리(Dictionary)는 파이썬에서 가장 많이 사용되는 데이터 구조 중 하나입니다. 딕셔너리는 키-값(key-value) 쌍으로 구성되며, 각 키(key)는 유일해야 합니다. 따라서 딕셔너리에서 값을 찾을 때는 해당 값에 대한 키를 사용합니다.

딕셔너리의 sort() 메소드는 기본적으로 키(key)를 기준으로 정렬합니다. 하지만 딕셔너리에서는 items() 메소드를 사용하여 딕셔너리의 각 키-값 쌍을 튜플(tuple) 형태로 반환할 수 있습니다. 이를 이용하여 딕셔너리를 정렬할 수 있습니다.

아래는 딕셔너리를 정렬하는 예시 코드입니다.

 

fruits = {'banana': 3, 'apple': 2, 'kiwi': 5, 'orange': 1}

# 딕셔너리의 각 키-값 쌍을 튜플로 변환하여 리스트에 저장
fruits_list = list(fruits.items())

# 값(value)을 기준으로 정렬
fruits_list.sort(key=lambda x: x[1])

print(fruits_list) # 출력 결과: [('orange', 1), ('apple', 2), ('banana', 3), ('kiwi', 5)]

# 키(key)를 기준으로 정렬
fruits_list.sort(key=lambda x: x[0])

print(fruits_list) # 출력 결과: [('apple', 2), ('banana', 3), ('kiwi', 5), ('orange', 1)]


위 코드에서 items() 메소드는 딕셔너리의 각 키-값 쌍을 튜플로 변환하며, list() 메소드는 이를 리스트 형태로 변환합니다. 그리고 sort() 메소드는 먼저 정렬 기준을 설정하기 위해 key 인자를 사용하여 lambda 함수를 정의합니다. 이 lambda 함수는 각 튜플의 첫 번째 요소인 키(key) 또는 두 번째 요소인 값(value)를 반환하게 됩니다.

딕셔너리에서 특정 키-값 쌍을 찾는 경우 dict.get() 메소드를 사용할 수 있습니다. dict.get(key[, default]) 메소드는 딕셔너리에서 키(key)에 해당하는 값을 반환합니다. 만약 키(key)가 존재하지 않는다면 default 값이 반환됩니다.