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

파이썬에서 부분 문자열 범위를 기준으로 문자열 정렬하는 방법

문자열 리스트를 특정 부분 문자열(substring) 범위를 기준으로 정렬해야 하는 경우가 있습니다. 이럴 때 sort() 함수의 key 매개변수와 함께 리스트 슬라이싱을 활용하는 메서드를 정의하면 간단하게 해결할 수 있습니다.

예제

다음은 부분 문자열 범위를 기준으로 문자열을 정렬하는 방법을 보여주는 예제입니다.

def get_substring(my_string):
   return my_string[i : j]

my_list = ["python", 'is', 'fun', 'to', 'learn']

print("The list is :")
print(my_list)

i, j = 1, 3
print("The value of i and j are :")
print(str(i)+ ',' +str(j))

my_list.sort(key=get_substring)

print("The result is :")
print(my_list)

출력 결과

The list is :
['python', 'is', 'fun', 'to', 'learn']
The value of i and j are :
1,3
The result is :
['learn', 'to', 'is', 'fun', 'python']

코드 설명

  • 'get_substring'이라는 이름의 메서드를 정의하며, 이 메서드는 문자열을 매개변수로 받습니다.

  • 리스트 슬라이싱(my_string[i : j])을 사용하여 인덱스 i부터 j 직전까지의 부분 문자열을 반환합니다.

  • 메서드 외부에서 문자열로 구성된 리스트를 정의하고 콘솔에 출력합니다.

  • 슬라이싱 범위를 결정하는 두 변수 i와 j의 값을 정의하고 콘솔에 표시합니다.

  • sort() 함수 호출 시 key 매개변수에 앞서 정의한 메서드를 전달하여, 각 문자열의 부분 문자열을 비교 기준으로 삼아 리스트를 정렬합니다.

  • 정렬된 최종 결과가 콘솔에 출력됩니다.

정렬 원리 이해하기

이 예제에서 i=1, j=3이므로 각 문자열의 인덱스 1~2에 해당하는 부분 문자열이 비교 기준이 됩니다. 각 단어별로 추출되는 기준값은 다음과 같습니다.

  • 'python' → 'yt'

  • 'is' → 's'

  • 'fun' → 'un'

  • 'to' → 'o'

  • 'learn' → 'ea'

이 기준값들을 사전순으로 정렬하면 'ea' < 'o' < 's' < 'un' < 'yt' 순서가 되므로, 최종 결과는 ['learn', 'to', 'is', 'fun', 'python']이 됩니다. 이처럼 key 매개변수에 커스텀 함수를 전달하면 다양한 조건으로 리스트를 자유롭게 정렬할 수 있습니다.