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

Python – 문자열을 대소문자 개수 차이 기준으로 정렬하는 방법

문자열 목록을 대소문자 개수의 차이를 기준으로 정렬해야 할 때가 있습니다. 이럴 때는 문자열을 매개변수로 받는 함수를 하나 정의하면 됩니다. 이 함수 안에서는 리스트 컴프리헨션과 islower(), isupper() 메서드를 활용해 소문자와 대문자의 개수를 각각 세고, 두 값의 절대적인 차이를 반환합니다. 이 반환값을 정렬 키로 사용하면 원하는 기준대로 문자열을 손쉽게 정렬할 수 있습니다.

예제 코드

아래 예제를 통해 실제 동작 과정을 살펴보겠습니다.

def get_diff(my_string):

    lower_count = len([ele for ele in my_string if ele.islower()])
    upper_count = len([ele for ele in my_string if ele.isupper()])
    return abs(lower_count - upper_count)

my_list = ["Abc", "Python", "best", "hello", "coders"]

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

my_list.sort(key=get_diff)

print("Sorted Strings by case difference :")
print(my_list)

출력 결과

The list is :
['Abc', 'Python', 'best', 'hello', 'coders']
Sorted Strings by case difference :
['Abc', 'Python', 'best', 'coders', 'hello']

코드 설명

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

  • 리스트 컴프리헨션과 islower(), isupper() 메서드를 사용해 문자열 내 각 문자가 소문자인지 대문자인지 판별합니다.

  • 소문자 개수와 대문자 개수는 각각 별도의 변수에 저장됩니다.

  • 두 변수 값의 절대 차이(abs())를 계산해 함수의 반환값으로 돌려줍니다.

  • 함수 외부에서 문자열 리스트를 정의한 뒤 콘솔에 출력합니다.

  • sort() 메서드의 key 인자에 앞서 정의한 함수를 전달하여 리스트를 정렬합니다.

  • 대소문자 차이가 작은 순서부터 정렬된 최종 리스트가 콘솔에 출력됩니다.