티스토리 뷰

파이썬의 sorted() 함수는 프로그래머에게 매우 유용한 도구로, 다양한 데이터 타입을 쉽게 정렬할 수 있습니다. 이 글에서는 sorted() 함수의 사용법과 다양한 옵션, 그리고 실전에서 어떻게 활용할 수 있는지를 자세히 설명하겠습니다.

sorted() 함수의 기본 개념

sorted() 함수는 파이썬 내장 함수 중 하나로, 주어진 반복 가능한 객체(iterable)를 정렬된 리스트로 반환합니다. 이 함수는 원본 데이터를 변경하지 않고 새로운 정렬된 리스트를 생성하기 때문에, 데이터의 불변성을 유지하면서 정렬 작업을 수행할 수 있습니다. 이는 데이터 무결성을 보장해야 하는 상황에서 특히 유용합니다.

함수 시그니처

sorted() 함수는 다음과 같은 시그니처를 가지고 있습니다:

sorted(iterable, key=None, reverse=False)
  • iterable: 정렬할 데이터가 포함된 객체입니다. 리스트, 튜플, 문자열 등 다양한 형태가 가능합니다.
  • key: 정렬 기준을 지정하는 함수입니다. 기본값은 None이며, 이 경우 기본 비교를 사용합니다.
  • reverse: 정렬 방향을 지정하는 불리언 값입니다. 기본값은 False이며, 오름차순으로 정렬됩니다. True로 설정하면 내림차순으로 정렬됩니다.

기본적인 사용 예제

리스트 정렬

리스트를 오름차순으로 정렬하는 가장 기본적인 예제는 다음과 같습니다:

numbers = [3, 1, 4, 2]
sorted_numbers = sorted(numbers)
print(sorted_numbers)  # 출력: [1, 2, 3, 4]

이 예제에서는 numbers라는 리스트를 sorted() 함수를 사용하여 오름차순으로 정렬합니다. 결과는 새로운 리스트로 반환되며, 원래의 numbers 리스트는 변경되지 않습니다.

문자열 정렬

문자열도 알파벳 순서로 정렬할 수 있습니다. 문자열을 문자 단위로 분리하여 정렬한 후 리스트로 반환합니다:

text = "python"
sorted_text = sorted(text)
print(sorted_text)  # 출력: ['h', 'n', 'o', 'p', 't', 'y']

문자열 "python"은 각 문자가 알파벳 순서대로 정렬되어 리스트 형태로 반환됩니다.

고급 옵션 사용하기

내림차순 정렬

기본적으로 sorted() 함수는 오름차순으로 데이터를 정렬하지만, reverse=True 옵션을 사용하면 내림차순으로도 정렬할 수 있습니다:

numbers = [3, 1, 4, 2]
sorted_numbers_desc = sorted(numbers, reverse=True)
print(sorted_numbers_desc)  # 출력: [4, 3, 2, 1]

이 예제에서는 reverse=True 옵션을 추가하여 리스트를 내림차순으로 정렬했습니다.

키 함수 사용

정렬 기준을 사용자 정의할 수 있는 key 매개변수를 사용하면 더욱 복잡한 기준으로 데이터를 정렬할 수 있습니다. 예를 들어 문자열의 길이를 기준으로 리스트를 정렬할 수 있습니다:

words = ["banana", "pie", "Washington", "book"]
sorted_words = sorted(words, key=len)
print(sorted_words)  # 출력: ['pie', 'book', 'banana', 'Washington']

여기서는 len 함수를 키로 사용하여 각 문자열의 길이를 기준으로 오름차순으로 정렬했습니다.

또한 사용자 정의 함수를 만들어 복잡한 기준을 적용할 수도 있습니다. 예를 들어 숫자 리스트에서 특정 값(예: 10)에 대한 절대 차이를 기준으로 정렬할 수 있습니다:

def custom_sort(n):
    return abs(n - 10)

numbers = [5, 3, 1, 11, 2, 12]
sorted_numbers_custom = sorted(numbers, key=custom_sort)
print(sorted_numbers_custom)  # 출력: [11, 12, 5, 3, 2, 1]

이 예제에서는 숫자와 10 사이의 절대 차이를 기준으로 리스트를 정렬했습니다.

다양한 데이터 타입에 적용

sorted() 함수는 리스트뿐만 아니라 튜플이나 딕셔너리 등 다양한 데이터 타입에 적용할 수 있으며 항상 새로운 리스트를 반환합니다.

튜플 정렬

튜플도 마찬가지로 sorted() 함수를 통해 요소별로 정렬할 수 있습니다:

tuples = (3, 1, 4, 2)
sorted_tuples = sorted(tuples)
print(sorted_tuples)  # 출력: [1, 2, 3, 4]

튜플은 변경 불가능한 자료형이기 때문에 원본은 그대로 유지되고 새로운 리스트가 반환됩니다.

딕셔너리 키 또는 값으로 정렬

딕셔너리는 직접적으로는 정렬되지 않지만 키나 값을 기준으로 리스트 형태로 변환하여 사용할 수 있습니다. 예를 들어 딕셔너리의 키를 기준으로 정렬하려면 다음과 같이 할 수 있습니다:

dictionary = {'banana': 3, 'apple': 4, 'pear': 1}
sorted_keys = sorted(dictionary.keys())
print(sorted_keys)  # 출력: ['apple', 'banana', 'pear']

또한 값을 기준으로 딕셔너리를 정렬하고 싶다면 다음과 같이 할 수 있습니다:

sorted_items = sorted(dictionary.items(), key=lambda item: item[1])
print(sorted_items)  # 출력: [('pear', 1), ('banana', 3), ('apple', 4)]

여기서는 람다 함수를 사용하여 각 아이템의 두 번째 요소(값)를 기준으로 딕셔너리 아이템을 오름차순으로 정렬했습니다.

 

결론

파이썬의 sorted() 함수는 다양한 데이터 타입을 효율적으로 정렬할 수 있는 강력한 도구입니다. 기본적인 오름차순 및 내림차순 정렬뿐만 아니라 사용자 정의 키 함수를 통해 복잡한 기준으로 데이터를 조작할 수 있습니다. 또한 원본 데이터를 변경하지 않고 새로운 리스트를 반환하기 때문에 데이터 무결성을 유지하면서 안전하게 사용할 수 있습니다. 이러한 이유로 sorted() 함수는 파이썬 프로그래밍에서 자주 사용되는 필수 기능 중 하나입니다.