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