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

Python – 정수 리스트의 각 요소에 알파벳 할당하기

정수 리스트의 각 요소에 알파벳을 순서대로 할당해야 하는 경우, 파이썬의 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개를 초과하지 않는 한 안전하게 사용할 수 있습니다.