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

파이썬 딕셔너리를 활용해 문자열 내 단어 빈도수를 계산하는 방법

파이썬에서 딕셔너리(dictionary)를 이용해 문자열에 등장하는 단어의 빈도수를 세고 싶다면, split() 메서드와 리스트 컴프리헨션(list comprehension)을 활용하면 간단하게 구현할 수 있습니다.

split() 메서드는 문자열을 공백 기준으로 나누어 단어 목록을 만들어 주며, 리스트 컴프리헨션은 반복문을 한 줄로 축약한 표현식입니다. 리스트 컴프리헨션을 사용하면 코드가 더 간결하고 가독성이 높아집니다.

참고로 파이썬의 리스트는 정수, 실수, 문자열 등 서로 다른 자료형의 값을 함께 저장할 수 있는 유연한 자료구조입니다.

예제 코드

다음은 문자열 내 단어 빈도수를 계산하는 전체 예제입니다.

my_string = input("Enter the string :")
my_list=[]
my_list=my_string.split()
word_freq=[my_list.count(p) for p in my_list]
print("The frequency of words is ...")
print(dict(zip(my_list,word_freq)))

실행 결과

Enter the string :Hi jane how are you jane
The frequency of words is ...
{'Hi': 1, 'jane': 2, 'how': 1, 'are': 1, 'you': 1}

코드 설명

  • 사용자로부터 문자열을 입력받아 변수에 저장합니다.
  • 빈 리스트를 하나 생성합니다.
  • split() 메서드로 문자열을 나누어 리스트에 담습니다.
  • 리스트 컴프리헨션으로 리스트를 순회하면서 count() 메서드를 호출해 각 단어의 등장 횟수를 셉니다.
  • 계산된 빈도수를 변수에 할당합니다.
  • zip() 함수로 단어 리스트와 빈도수 리스트를 묶은 뒤 dict()로 변환하여 딕셔너리를 만듭니다.
  • 최종 결과를 콘솔에 출력합니다.

이 방법 외에도 Collections.Counter 클래스를 사용하면 더욱 효율적으로 단어 빈도를 계산할 수 있으니, 데이터 양이 많은 경우 참고하시기 바랍니다.