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

Python – 문자열 리스트에서 문자별 인덱스 매핑 구현하기

파이썬 프로그래밍을 하다 보면 문자열 리스트 안의 각 문자가 몇 번째 요소(인덱스)에 나타나는지 확인해야 하는 경우가 있습니다. 이런 문제는 단순한 반복문과 defaultdict, 그리고 add 메서드만으로도 손쉽게 해결할 수 있습니다.

예제 코드

다음은 문자열 리스트의 각 문자를 해당 인덱스와 매핑하는 과정을 보여주는 예제입니다.

from collections import defaultdict

my_list = ['p y t h o n', 'i s', 'f u n', 't o', 'l e a r n']

print("The list is :")
print(my_list)

my_result = defaultdict(set)

for index, element in enumerate(my_list):
    for sub in element.split():
        my_result[sub].add(index + 1)

my_result = {key: list(val) for key, val in my_result.items()}

print("The result is :")
print(my_result)

실행 결과

The list is :
['p y t h o n', 'i s', 'f u n', 't o', 'l e a r n']
The result is :
{'p': [1], 'y': [1], 't': [1, 4], 'h': [1], 'o': [1, 4], 'n': [1, 3, 5], 'i': [2], 's': [2], 'f': [3], 'u': [3], 'l': [5], 'e': [5], 'a': [5], 'r': [5]}

코드 상세 설명

  • 모듈 임포트: collections 모듈에서 defaultdict를 불러옵니다. 일반 딕셔너리와 달리 존재하지 않는 키에 접근해도 오류 없이 기본값(여기서는 빈 집합)이 자동으로 생성됩니다.

  • 리스트 정의 및 출력: 공백으로 구분된 문자들로 이루어진 문자열 5개를 담은 리스트를 만들고 콘솔에 출력합니다.

  • 빈 딕셔너리 생성: defaultdict(set)을 사용해 값이 집합(set) 형태인 딕셔너리를 초기화합니다.

  • 반복 처리: enumerate 함수로 리스트를 순회하면서 각 요소의 인덱스와 값을 동시에 얻습니다.

  • 문자 분리 및 저장: split 메서드로 각 문자열을 개별 문자로 분리한 뒤, add 메서드를 통해 해당 문자가 등장한 위치(인덱스 + 1)를 집합에 추가합니다. 인덱스에 1을 더하면 사람이 읽기 편한 1부터 시작하는 번호가 됩니다.

  • 딕셔너리 컴프리헨션: 집합 형태의 값을 다시 리스트로 변환하여 최종 결과 딕셔너리를 완성합니다.

  • 결과 출력: 완성된 매핑 결과를 콘솔에 출력합니다.

정리

이처럼 defaultdictenumerate를 조합하면 별도의 조건 검사 없이도 깔끔하게 문자-인덱스 매핑을 구현할 수 있습니다. 집합을 사용하기 때문에 중복 인덱스가 자동으로 제거되며, 텍스트 전처리나 데이터 분석 작업에서 유용하게 활용할 수 있습니다.