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

파이썬에서 특정 문자(K)의 빈도수를 기준으로 문자열 리스트 정렬하기

문자열 리스트를 특정 문자 'K'가 등장하는 횟수(빈도수)를 기준으로 정렬해야 하는 경우, 파이썬의 내장 함수인 sorted와 람다(lambda) 함수를 함께 사용하면 간단하게 해결할 수 있습니다. 람다 함수 안에서 각 문자열에 대해 count() 메서드로 해당 문자의 개수를 세고, 여기에 마이너스(-) 부호를 붙여 내림차순 정렬이 되도록 만드는 것이 핵심입니다.

예제

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

my_list = ['Hi', 'Will', 'Jack', 'Python', 'Bill', 'Mills', 'goodwill']
print("The list is : " )
print(my_list)
my_list.sort()
print("The list after sorting is ")
print(my_list)

K = 'l'
print("The value of K is ")
print(K)

my_result = sorted(my_list, key = lambda ele: -ele.count(K))

print("The resultant list is : ")
print(my_result)

출력 결과

The list is :
['Hi', 'Will', 'Jack', 'Python', 'Bill', 'Mills', 'goodwill']
The list after sorting is
['Bill', 'Hi', 'Jack', 'Mills', 'Python', 'Will', 'goodwill']
The value of K is
l
The resultant list is :
['Bill', 'Mills', 'Will', 'goodwill', 'Hi', 'Jack', 'Python']

코드 설명

  • 문자열로 구성된 리스트를 정의한 뒤 콘솔에 출력합니다.

  • sort() 메서드를 사용해 리스트를 알파벳순(오름차순)으로 정렬하고 그 결과를 출력합니다.

  • 정렬 기준이 될 문자 'K'의 값('l')을 초기화하고 콘솔에 출력합니다.

  • sorted 메서드로 리스트를 다시 정렬하며, key 매개변수에 람다 함수를 지정합니다. 람다 함수는 각 요소에서 문자 'l'의 등장 횟수를 세고 음수로 변환하여, 빈도수가 높은 문자열이 앞쪽에 오도록 내림차순 정렬을 수행합니다.

  • 정렬된 결과를 변수에 할당한 후 콘솔에 출력합니다.

출력 결과를 보면 'Bill'(2회), 'Mills'(2회), 'Will'(2회), 'goodwill'(2회)처럼 문자 'l'이 많이 포함된 단어들이 앞에 배치되고, 'l'이 전혀 없는 'Hi', 'Jack', 'Python'은 뒤쪽에 배치된 것을 확인할 수 있습니다. 이처럼 sorted와 람다 함수의 조합은 복잡한 조건의 정렬을 한 줄의 코드로 처리할 수 있는 강력한 방법입니다.