แนวคิด
จับคู่ตัวเลขในลิสต์ (หลังเรียงลำดับ) กับตัวอักษร a-z ตามลำดับ ใช้ string.ascii_lowercase และ dictionary mapping
ตัวอย่างโค้ด
import string
my_list = [11, 51, 32, 45, 21, 66, 12, 58, 90, 0]
print("ลิสต์ต้นฉบับ:", my_list)
my_list.sort()
print("หลังเรียง:", my_list)
# Mapping ตัวเลข -> ตัวอักษร
mapping = {}
counter = 0
for num in my_list:
if num not in mapping:
mapping[num] = string.ascii_lowercase[counter]
counter += 1
# สร้างลิสต์ผลลัพธ์ตามลำดับเดิม (ก่อน sort) หรือลำดับใหม่
my_result = [mapping[num] for num in my_list]
print("Mapping:", mapping)
print("ผลลัพธ์:", my_result)
ผลลัพธ์
ลิสต์ต้นฉบับ: [11, 51, 32, 45, 21, 66, 12, 58, 90, 0]
หลังเรียง: [0, 11, 12, 21, 32, 45, 51, 58, 66, 90]
Mapping: {0: 'a', 11: 'b', 12: 'c', 21: 'd', 32: 'e', 45: 'f', 51: 'g', 58: 'h', 66: 'i', 90: 'j'}
ผลลัพธ์: ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']
กรณีตัวเลขซ้ำ
โค้ดใช้ if num not in mapping: continue ข้ามตัวซ้ำ -> ตัวอักษรไม่กระโดด
ขยาย: รองรับมากกว่า 26 ค่า
import itertools
letters = [''.join(p) for p in itertools.product(string.ascii_lowercase, repeat=2)]
# aa, ab, ac, ... zz (676 ค่า)