파이썬에서 문자열에 포함된 각 단어가 몇 번 등장하는지 확인해야 할 때, 딕셔너리 컴프리헨션(dictionary comprehension)을 활용하면 복잡한 반복문 없이도 한 줄로 간결하게 처리할 수 있습니다.
예제 코드
다음은 문자열 내 단어 빈도를 계산하는 예시입니다.
my_str = 'Hi there Will, how are you Will, Will you say Hi to me'
print("The string is : ")
print(my_str)
my_result = {key: my_str.count(key) for key in my_str.split()}
print("The word frequency is : ")
print(my_result)
출력 결과
The string is :
Hi there Will, how are you Will, Will you say Hi to me
The word frequency is :
{'Hi': 2, 'there': 1, 'Will,': 2, 'how': 1, 'are': 1, 'you': 2, 'Will': 3, 'say': 1, 'to': 1, 'me': 1}
코드 설명
먼저 문자열을 하나 정의하고, 콘솔에 출력하여 원본 데이터를 확인합니다.
딕셔너리 컴프리헨션을 사용해 문자열을 순회하면서
split()메서드로 공백을 기준으로 단어를 분리합니다.각 단어(key)가 전체 문자열에서 등장한 횟수를
count()메서드로 계산하여 값(value)으로 저장합니다.완성된 딕셔너리를 변수에 담은 뒤, 최종 결과를 콘솔에 출력합니다.
참고 사항
이 방식은 대소문자와 문장부호를 구분한다는 점에 유의해야 합니다. 출력 결과에서 'Hi'와 'hi'는 서로 다른 단어로 취급되며, 'Will,'(쉼표 포함)와 'Will' 역시 별개로 집계됩니다.
collections.Counter를 활용한 대안
표준 라이브러리인 collections.Counter를 사용하면 더욱 직관적으로 동일한 작업을 수행할 수 있으며, 성능 면에서도 유리합니다.
from collections import Counter
my_str = 'Hi there Will, how are you Will, Will you say Hi to me'
result = Counter(my_str.split())
print(result)
# Counter({'Will': 3, 'Hi': 2, 'you': 2, 'there': 1, 'Will,': 2, ...})
간단한 스크립트에는 딕셔너리 컴프리헨션 방식이 적합하고, 대량의 텍스트 데이터를 다룰 때는 Counter 사용을 권장합니다.