정수 리스트의 각 요소에 알파벳을 순서대로 할당해야 하는 경우, 파이썬의 string.ascii_lowercase 속성과 리스트 컴프리헨션(list comprehension)을 활용하면 간단하게 해결할 수 있습니다.
예제 코드
아래는 이를 구현한 예제입니다.
import string
my_list = [11, 51, 32, 45, 21, 66, 12, 58, 90, 0]
print("The list is : " )
print(my_list)
print("The list after sorting is : " )
my_list.sort()
print(my_list)
temp_val = {}
my_counter = 0
for element in my_list:
if element in temp_val:
continue
temp_val[element] = string.ascii_lowercase[my_counter]
my_counter += 1
my_result = [temp_val.get(element) for element in my_list]
print("The resultant list is :")
print(my_result)실행 결과
The list is : [11, 51, 32, 45, 21, 66, 12, 58, 90, 0] The list after sorting is : [0, 11, 12, 21, 32, 45, 51, 58, 66, 90] The resultant list is : ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']
코드 설명
먼저 필요한
string모듈을 임포트하여 환경에 불러옵니다.정수로 구성된 리스트를 정의하고 콘솔에 출력합니다.
sort()메서드를 사용해 리스트를 오름차순으로 정렬한 뒤 다시 출력합니다.알파벳 매핑 정보를 저장할 빈 딕셔너리를 하나 생성합니다.
카운터 변수를 0으로 초기화합니다.
정렬된 리스트를 순회하면서, 이미 딕셔너리에 존재하는 값이면
continue문을 통해 건너뜁니다. 이를 통해 중복된 값에는 동일한 알파벳이 유지됩니다.그렇지 않은 경우
ascii_lowercase에서 해당 인덱스 위치의 알파벳을 가져와 딕셔너리에 저장하고 카운터를 1씩 증가시킵니다.마지막으로 리스트 컴프리헨션과 딕셔너리의
get()메서드를 사용해 원본 리스트의 각 요소에 대응하는 알파벳을 조회합니다.조회된 결과를 새로운 리스트에 담아 변수에 할당한 후 출력합니다.
핵심 포인트
이 방식의 장점은 중복 값을 자동으로 처리한다는 점입니다. 예제의 리스트에는 중복이 없지만, 만약 동일한 숫자가 여러 번 등장하면 해당 숫자에는 항상 같은 알파벳이 할당됩니다. 또한 string.ascii_lowercase는 소문자 a부터 z까지 26개의 문자를 제공하므로, 서로 다른 값이 26개를 초과하지 않는 한 안전하게 사용할 수 있습니다.