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

Python – 리스트를 대문자 개수 기준으로 정렬하는 방법

리스트의 요소들을 대문자가 포함된 개수(빈도)를 기준으로 정렬해야 하는 경우, 리스트 컴프리헨션과 isupper 메서드를 활용하는 함수를 정의하여 손쉽게 해결할 수 있습니다.

아래는 실제 구현 예시입니다.

예제 코드

def higher_character_sort(sub):
    return len([ele for ele in sub if ele.isupper()])

my_list = ["pyt", "is", "FUN", "to", "Learn"]

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

my_list.sort(key=higher_character_sort)

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

실행 결과

The list is:
['pyt', 'is', 'FUN', 'to', 'Learn']
The result is:
['pyt', 'is', 'to', 'Learn', 'FUN']

코드 설명

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

  • 리스트 컴프리헨션을 사용해 문자열의 각 문자를 순회하고, isupper 메서드로 해당 문자가 대문자인지 여부를 확인합니다.

  • 대문자로 판별된 문자들의 개수(len)를 반환값으로 돌려줍니다.

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

  • sort 메서드를 사용해 리스트를 정렬하며, key 인자에 앞서 정의한 함수를 지정합니다. 이렇게 하면 대문자 개수가 적은 요소부터 오름차순으로 정렬됩니다.

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

참고: 내림차순으로 정렬하기

대문자가 많은 요소를 앞쪽에 배치하고 싶다면 sort 메서드에 reverse=True 옵션을 추가하면 됩니다.

my_list.sort(key=higher_character_sort, reverse=True)
# 결과: ['FUN', 'Learn', 'pyt', 'is', 'to']