Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python에서 단어를 사전순으로 정렬하는 방법

사전순(lexicographical) 정렬이란?

단어를 사전순으로 정렬한다는 것은, 먼저 각 단어의 첫 번째 글자를 기준으로 순서를 배열하는 것을 의미합니다. 첫 글자가 같은 단어들이 있다면 그 그룹 안에서 두 번째 글자를 기준으로 다시 정렬하고, 이 과정을 계속 반복합니다. 마치 실제 사전(데이터 구조로서의 딕셔너리가 아닌 언어의 사전)에서 단어가 배열되는 방식과 동일합니다.

Python에서는 이러한 정렬을 위해 sort()sorted()라는 두 가지 함수를 제공합니다. 각각의 사용 방법과 어떤 상황에서 어떤 함수를 써야 하는지 살펴보겠습니다.

제자리(in-place) 정렬: sort() 메서드

기존 리스트 자체의 순서를 직접 변경하면서 정렬하고 싶다면 sort() 메서드를 사용하면 됩니다. sort()는 원본 리스트를 제자리에서 수정하며, 새로운 리스트를 반환하지 않습니다.

예제

my_arr = [
    "hello",
    "apple",
    "actor",
    "people",
    "dog"
]

print(my_arr)
my_arr.sort()
print(my_arr)

출력 결과

['hello', 'apple', 'actor', 'people', 'dog']
['actor', 'apple', 'dog', 'hello', 'people']

실행 결과를 보면 원본 리스트인 my_arr 자체가 정렬된 순서로 변경된 것을 확인할 수 있습니다.

새 리스트 생성: sorted() 함수

원본 리스트는 그대로 유지한 채, 정렬된 새로운 리스트를 만들고 싶다면 sorted() 함수를 사용해야 합니다. sorted()는 원본을 변경하지 않고 정렬된 결과를 담은 새 인스턴스를 반환합니다.

예제

my_arr = [
    "hello",
    "apple",
    "actor",
    "people",
    "dog"
]

print(my_arr)
# sorted() 메서드로 새로운 리스트 생성
new_arr = sorted(my_arr)

print(new_arr)
# 이번에는 my_arr가 제자리에서 변경되지 않고,
# 정렬된 새 인스턴스가 new_arr에 할당됩니다.
print(my_arr)

출력 결과

['hello', 'apple', 'actor', 'people', 'dog']
['actor', 'apple', 'dog', 'hello', 'people']
['hello', 'apple', 'actor', 'people', 'dog']

위 출력에서 볼 수 있듯이, new_arr에는 정렬된 새 리스트가 담겨 있고, 원본 리스트 my_arr는 처음 상태 그대로 유지되었습니다.

정리

  • sort(): 원본 리스트를 제자리에서 정렬하며, 반환값은 None입니다.
  • sorted(): 원본을 변경하지 않고 정렬된 새 리스트를 반환합니다.
  • 두 방법 모두 기본적으로 문자열을 사전순(오름차순)으로 정렬하며, 내림차순이 필요하면 reverse=True 옵션을 사용할 수 있습니다.