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

Python 시퀀스에서 두 번째로 많이 반복되는 단어 찾는 방법

개요

문자열(시퀀스)이 주어졌을 때, 우리의 과제는 두 번째로 많이 반복되는 단어를 찾는 것입니다. 이 문제는 파이썬의 Counter(iterator)를 활용하면 간단하게 해결할 수 있습니다. Counter는 단어를 키(key)로, 해당 단어의 빈도수를 값(value)으로 갖는 딕셔너리를 자동으로 생성해 줍니다.

알고리즘

  1. 사용자 정의 리스트를 생성합니다.
  2. 리스트를 딕셔너리로 변환합니다.
  3. 딕셔너리의 값들을 가져와 내림차순으로 정렬합니다.
  4. 정렬된 결과에서 두 번째 요소가 곧 두 번째로 큰 값입니다.
  5. 전체 딕셔너리를 다시 순회하면서, 값이 두 번째로 큰 값과 일치하는 키를 화면에 출력합니다.

예제 코드

# 파이썬 시퀀스에서 두 번째로 많이 반복되는 단어 출력하기
from collections import Counter

def secondrepeatation(A):
    # 리스트를 딕셔너리로 변환
    con = Counter(A)
    res = sorted(con.values(), reverse=True)
    maxi = res[1]
    for (key, val) in con.items():
        if val == maxi:
            print("Second most repeated word ::>", key)
            return

# 드라이버 프로그램
if __name__ == "__main__":
    A = list()          # 사용자 정의 리스트 생성
    n = int(input("Enter the size of the List ::"))
    print("Enter the word ::")
    for i in range(int(n)):
        k = input("")
        A.append(k)
    secondrepeatation(A)   # 함수 호출

실행 결과

Enter the size of the List ::4
Enter the word ::
aa
bb
aa
cc
Second most repeated word ::> bb

코드 핵심 포인트

  • Counter: collections 모듈의 Counter는 리스트와 같은 반복 가능한 객체를 입력받아 {요소: 빈도수} 형태의 딕셔너리를 자동으로 만들어 줍니다. 위 예제에서는 {'aa': 2, 'bb': 1, 'cc': 1}이 생성됩니다.
  • 내림차순 정렬: sorted(con.values(), reverse=True)를 통해 빈도수를 내림차순으로 정렬하면, 인덱스 0은 최대 빈도수, 인덱스 1은 두 번째로 큰 빈도수가 됩니다.
  • 결과 출력: 딕셔너리를 순회하면서 두 번째로 큰 빈도수(maxi)와 일치하는 첫 번째 키를 출력한 뒤 return으로 함수를 종료합니다.

위 예제에서 'aa'는 2번으로 가장 많이 등장했고, 그다음 빈도수인 1번 등장한 단어 중 먼저 발견된 'bb'가 두 번째로 많이 반복되는 단어로 출력됩니다.