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

파이썬으로 단어의 첫 글자를 키로, 해당 단어를 값으로 갖는 딕셔너리 만들기

문자열에서 각 단어의 첫 글자를 키로, 그 문자로 시작하는 단어 자체를 값으로 하는 딕셔너리를 만들어야 하는 경우가 있습니다. 이럴 때 파이썬에서는 split() 메서드와 딕셔너리, 그리고 간단한 if 조건문을 활용하면 손쉽게 구현할 수 있습니다.

예제 코드

아래는 전체 구현 예시입니다.

my_string = input("문자열을 입력하세요 : ")
split_string = my_string.split()
my_dict = {}
for elem in split_string:
    if elem[0] not in my_dict.keys():
        my_dict[elem[0]] = []
        my_dict[elem[0]].append(elem)
    else:
        if elem not in my_dict[elem[0]]:
            my_dict[elem[0]].append(elem)
print("생성된 딕셔너리는 다음과 같습니다")
for k, v in my_dict.items():
    print(k, ":", v)

실행 결과

문자열을 입력하세요 : Hey Jane, how are you
생성된 딕셔너리는 다음과 같습니다
H : ['Hey']
J : ['Jane,']
h : ['how']
a : ['are']
y : ['you']

코드 설명

  • 사용자로부터 문자열을 입력받아 변수에 저장합니다.
  • split() 메서드를 사용해 문자열을 공백 기준으로 나누고, 그 결과를 별도의 변수에 할당합니다.
  • 값을 저장할 빈 딕셔너리를 하나 생성합니다.
  • 분리된 단어들을 순회하면서, 해당 단어의 첫 글자가 딕셔너리의 키로 존재하지 않으면 새 키를 만들고 빈 리스트를 값으로 지정한 뒤 단어를 추가합니다.
  • 첫 글자가 이미 키로 존재하는 경우에는, 같은 단어가 중복되지 않는다면 기존 리스트에 바로 추가(append)합니다.
  • 모든 단어에 대한 처리가 끝나면 완성된 딕셔너리를 콘솔에 출력합니다.

참고: 더 간결한 방법

위 코드는 dict.setdefault() 메서드를 사용하면 더욱 간결하게 작성할 수 있습니다.

my_string = input("문자열을 입력하세요 : ")
my_dict = {}
for word in my_string.split():
    my_dict.setdefault(word[0], []).append(word)
print(my_dict)

setdefault(키, 기본값)은 해당 키가 딕셔너리에 없으면 기본값(여기서는 빈 리스트)을 설정하고 반환해 주므로, 조건문 없이 한 줄로 처리할 수 있다는 장점이 있습니다. 대소문자를 구분하지 않으려면 word[0].lower()처럼 첫 글자를 소문자로 변환한 뒤 키로 사용하면 됩니다.