Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

กำหนดตัวอักษรภาษาอังกฤษให้แต่ละค่าในลิสต์ตัวเลข

แนวคิด

จับคู่ตัวเลขในลิสต์ (หลังเรียงลำดับ) กับตัวอักษร 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 ค่า)