หลายครั้งที่เราจำเป็นต้องระบุองค์ประกอบในรายการโดยไม่ซ้ำกัน เพื่อที่เราต้องกำหนด 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]