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

กำหนดค่าให้กับหมายเลขเฉพาะในรายการใน Python


หลายครั้งที่เราจำเป็นต้องระบุองค์ประกอบในรายการโดยไม่ซ้ำกัน เพื่อที่เราต้องกำหนด ID ที่ไม่ซ้ำกันให้กับแต่ละองค์ประกอบในรายการ ซึ่งสามารถทำได้โดยสองวิธีต่อไปนี้โดยใช้ฟังก์ชัน inbuilt ต่างๆ ที่มีอยู่ใน Python

ด้วยการแจกแจงและตั้งค่า

ฟังก์ชันแจกแจงกำหนดรหัสเฉพาะให้กับแต่ละองค์ประกอบ แต่ถ้ารายการนั้นเป็นองค์ประกอบที่ซ้ำกันอยู่แล้ว เราจำเป็นต้องสร้างพจนานุกรมของคู่ค่าคีย์จากรายการและกำหนดค่าที่ไม่ซ้ำโดยใช้ฟังก์ชันชุด

ตัวอย่าง

# Given List
Alist = [5,3,3,12]
print("The given list : ",Alist)

# Assigning ids to values
enum_dict = {v: k for k, v in enumerate(set(Alist))}
list_ids = [enum_dict[n] for n in Alist]

# Print ids of the dictionary
print("The list of unique ids is: ",list_ids)

ผลลัพธ์

การเรียกใช้โค้ดข้างต้นทำให้เราได้ผลลัพธ์ดังต่อไปนี้ -

The given list : [5, 3, 3, 12]
The list of unique ids is: [2, 0, 0, 1]

ด้วย count() และ map()

ฟังก์ชัน map() จะใช้ฟังก์ชันเดียวกันซ้ำแล้วซ้ำเล่ากับพารามิเตอร์ต่างๆ ที่ส่งผ่านไปยังฟังก์ชันดังกล่าว แต่วิธีการนับจะคืนค่าจำนวนองค์ประกอบด้วยค่าที่ระบุ ดังนั้นเราจึงรวมสองสิ่งนี้เข้าด้วยกันเพื่อรับรายการ ID ที่ไม่ซ้ำสำหรับองค์ประกอบของรายการที่กำหนดในโปรแกรมด้านล่าง

ตัวอย่าง

from itertools import count

# Given List
Alist = [5,3,3,12]
print("The given list : ",Alist)

# Assign unique value to list elements
dict_ids = list(map({}.setdefault, Alist, count()))

# The result
print("The list of unique ids is: ",dict_ids)

ผลลัพธ์

การเรียกใช้โค้ดข้างต้นทำให้เราได้ผลลัพธ์ดังต่อไปนี้ -

The given list : [5, 3, 3, 12]
The list of unique ids is: [0, 1, 1, 3]