<aside>
💬 lv0
, 데이터 구조
주어진 문자열에서 각 단어의 빈도수를 계산하는 함수를 작성해주세요. 단어는 공백으로 구분되며, 대소문자를 구분하지 않습니다. 반환되는 빈도수 정보는 사전 형태여야 합니다.
예를 들어, 문자열 "Hello world, hello"에서 함수는 {"hello": 2, "world": 1}
을 반환해야 합니다.
입력 (문자열) | 출력 (단어 빈도수 사전) |
---|---|
"Hello world, hello" | {"hello": 2, "world": 1} |
"The quick brown fox" | {"the": 1, "quick": 1, "brown": 1, "fox": 1} |
"One one one two" | {"one": 3, "two": 1} |
주어진 문자열에서 각 단어의 빈도수를 계산하여 사전 형태로 반환합니다.
</aside>
def solution(data):
words = data.lower().split() **#1 문자열 전처리**
frequency = {} **#2 빈도수 계산을 위한 딕셔너리 초기화**
for word in words: **#3 단어별 빈도수 계산**
cleaned_word = "".join(char for char in word if char.isalpha())
if cleaned_word:
frequency[cleaned_word] = frequency.get(cleaned_word, 0) + 1
return frequency **#4 빈도수 반환**
문자열 전처리
주어진 문자열 data
를 모두 소문자로 변환하고 공백을 기준으로 단어를 분리합니다.
빈도수 계산을 위한 딕셔너리 초기화
각 단어의 빈도수를 저장할 빈 딕셔너리 frequency
를 초기화합니다.
단어별 빈도수 계산
분리된 단어들에 대해 순회하면서, 각 단어에서 알파벳만을 추출합니다.
정제된 단어가 비어있지 않은 경우, 딕셔너리frequency
에서 해당 단어의 빈도수를 하나 증가시킵니다. 여기서 get
메서드를 사용하여 단어가 frequency
에 이미 존재하면 그 값을 가져오고, 그렇지 않으면 0을 반환한 후 1을 더합니다.
결과 반환
모든 단어의 빈도수 계산이 완료된 후, 딕셔너리frequency
를 반환합니다. frequency
는 각 단어와 해당 단어의 빈도수를 키-값 쌍으로 가집니다.
lower() 메서드
기본 형태: str.lower()
개념: 문자열을 소문자로 변환하는 메서드입니다.
s = "Hello World"
print(s.lower()) # 출력: hello world
split() 메서드
기본 형태: str.split(separator)
개념: 문자열을 주어진 구분자(separator)를 기준으로 분할하여 리스트로 반환하는 메서드입니다.
s = "apple,banana,orange"
fruits = s.split(",")
print(fruits) #출력: ['apple', 'banana', 'orange']
isalpha() 메서드
str.isalpha()