คุณสามารถลบรายการซ้ำจาก Python ได้โดยใช้ dict.fromkeys() ซึ่งสร้างดิกชันนารีที่ลบค่าซ้ำออก คุณยังสามารถแปลงรายการเป็นเซ็ต (set) ได้ คุณต้องแปลงดิกชันนารีหรือเซ็ตกลับเป็นรายการเพื่อดูรายการที่ลบรายการซ้ำแล้ว
เมื่อคุณทำงานกับรายการใน Python อาจมีสถานการณ์ที่คุณต้องการลบรายการซ้ำออกจากรายการ ตัวอย่างเช่น สมมติว่าคุณเป็นเชฟที่กำลังรวมเมนูเก่าและใหม่สำหรับร้านอาหารของคุณ คุณอาจต้องการลบรายการซ้ำที่เกิดจากการรวมเมนูสองเมนู
บทช่วยสอนนี้จะครอบคลุมการใช้เมธอด dict.fromkeys() การแปลงรายการเป็นเซ็ต เราจะอภิปรายวิธีแปลงเอาต์พุตจากสองเมธอดนี้กลับเป็นรายการ เพื่อให้คุณสามารถตีความข้อมูลของคุณเป็นรายการได้
Python ลบรายการซ้ำจากรายการ
คุณสามารถลบรายการซ้ำโดยใช้เซ็ตของ Python หรือเมธอด dict.fromkeys()
เมธอด dict.fromkeys() แปลงรายการเป็นดิกชันนารี ดิกชันนารีไม่สามารถมีค่าซ้ำได้ ดังนั้นดิกชันนารีที่มีค่าเฉพาะที่ไม่ซ้ำกันจึงถูกคืนค่าโดย dict.fromkeys()
เซ็ต (Sets) เหมือนกับดิกชันนารี ไม่สามารถมีค่าซ้ำได้ หากเราแปลงรายการเป็นเซ็ต รายการซ้ำทั้งหมดจะถูกลบออก
Python ลบรายการซ้ำจาก List: dict.fromkeys()
ดิกชันนารี Python จัดเก็บข้อมูลในโครงสร้างคีย์/ค่า (key/value structure) ดิกชันนารีแมปคีย์ไปยังค่าและสร้างคู่ที่จัดเก็บข้อมูลใน Python
ดิกชันนารีใน Python ไม่สามารถรวมคีย์ซ้ำได้ หากเราแปลงรายการของเราเป็นดิกชันนารี มันจะลบค่าซ้ำออก นี่คือที่มาของเมธอด fromkeys()
ตัวอย่าง dict.fromkeys()
fromkeys() เป็นฟังก์ชันในตัว (built-in function) ที่สร้างดิกชันนารีจากคีย์ที่คุณระบุ เนื่องจากดิกชันนารีไม่สามารถรวมคีย์ซ้ำได้ ฟังก์ชันนี้จะลบค่าซ้ำจากรายการของเราออก แล้วเราสามารถแปลงดิกชันนารีของเรากลับเป็นรายการได้
ไวยากรณ์สำหรับเมธอด fromkeys() มีดังนี้:
dictionary_name.fromkeys(keys, value)
fromkeys รับสองพารามิเตอร์: keys และ value พารามิเตอร์ keys คือ iterable ซึ่งระบุคีย์ของดิกชันนารีใหม่ที่คุณต้องการสร้าง พารามิเตอร์ value ของเราเป็นทางเลือกและเก็บค่าสำหรับคีย์ทั้งหมด เราไม่ต้องการพารามิเตอร์นี้สำหรับตัวอย่างนี้ ดังนั้นเราจะละเว้นมัน
สมมติว่าเราเป็นเชฟที่กำลังรวมเมนูพิซซ่าเก่าและใหม่เป็นเมนูใหญ่หนึ่งเมนู เมนูใหม่รวมพิซซ่าใหม่หลายอย่างที่เราทำงานมาหลายเดือน แต่เราต้องการเสนอพิซซ่าบนเมนูเก่า เราไม่ต้องการให้รายการซ้ำปรากฏบนเมนู เพราะจะทำให้ลูกค้าสับสน
เพื่อลบรายการซ้ำที่อาจมีอยู่ในเมนูใหม่ เราสามารถใช้โค้ดต่อไปนี้:
new_menu = ['Hawaiian', 'Margherita', 'Mushroom', 'Prosciutto', 'Meat Feast', 'Hawaiian', 'Bacon', 'Black Olive Special', 'Sausage', 'Sausage'] final_new_menu = list(dict.fromkeys(new_menu)) print(final_new_menu)
โค้ดของเราลบองค์ประกอบซ้ำของเราออกและคืนค่า:
['Hawaiian', 'Margherita', 'Mushroom', 'Prosciutto', 'Meat Feast', 'Bacon', 'Black Olive Special', 'Sausage']
ในบรรทัดแรก เราประกาศตัวแปร Python ชื่อ new_menu ซึ่งจัดเก็บพิซซ่าทั้งหมดบนเมนูใหม่ โปรดสังเกตว่ารายการนี้มีค่าซ้ำ — ทั้ง Sausage และ Hawaiian ปรากฏสองครั้งในรายการ Python
เราใช้เมธอด dict.fromkeys() เพื่อสร้างดิกชันนารีจากตัวแปร new_menu ของเรา ต่อไป เราใช้ list() เพื่อแปลงข้อมูลของเราจากดิกชันนารีเป็นอาร์เรย์ Python หรือรายการ ในบรรทัดสุดท้ายของโค้ด เราพิมพ์รายการที่แก้ไขแล้วของเรา
ตามที่คุณเห็น โปรแกรมของเราได้ลบค่าซ้ำจากข้อมูลของเรา และ Sausage และ Hawaiian ปรากฏครั้งเดียวในรายการใหม่ของเรา
ลบรายการซ้ำจาก List Python: เซ็ต (Sets)
ออบเจ็กต์เซ็ตของ Python เป็นโครงสร้างข้อมูลที่ ไม่มีลำดับ (unordered) และ ไม่มีดัชนี (unindexed) เซ็ตจัดเก็บชุดของรายการที่ไม่ซ้ำกันใน Python ไม่เหมือนรายการ เซ็ตไม่สามารถจัดเก็บค่าซ้ำได้
ดังนั้น เนื่องจากเซ็ตไม่สามารถจัดเก็บรายการซ้ำได้ เราสามารถแปลงรายการของเราเป็นเซ็ตเพื่อลบพวกมันออก ใน Python เซ็ตเป็นรายการของรายการที่คั่นด้วยเครื่องหมายจุลภาคล้อมรอบด้วยวงเล็บปีกกา นี่คือตัวอย่างของเซ็ตใน Python ที่จัดเก็บรายการพิซซ่า:
pizzas = ('Margherita', 'Hawaiian', 'Mushroom', 'Meat Feast')
ตัวอย่างการลบรายการซ้ำโดยใช้เซ็ต
มาใช้ตัวอย่างของเราจากข้างต้นเพื่อแสดงให้เห็นว่าจะใช้เซ็ตลบค่าซ้ำจากรายการได้อย่างไร
สมมติว่าเราเป็นเชฟพิซซ่าที่ต้องการรวมเมนูเก่าและใหม่ของเรา แต่มันอาจมีรายการซ้ำระหว่างเมนูเหล่านี้ ซึ่งเราจะต้องการลบออกก่อนสร้างเมนูสุดท้าย เพื่อลบรายการซ้ำเหล่านี้โดยใช้แนวทางเซ็ต เราสามารถใช้โค้ดต่อไปนี้:
new_menu = ['Hawaiian', 'Margherita', 'Mushroom', 'Prosciutto', 'Meat Feast', 'Hawaiian', 'Bacon', 'Black Olive Special', 'Sausage', 'Sausage'] final_new_menu = list(set(new_menu)) print(final_new_menu)
นี่คือรายการของเราหลังจากลบค่าซ้ำ:
['Mushroom', 'Black Olive Special', 'Meat Feast', 'Bacon', 'Margherita', 'Sausage', 'Prosciutto', 'Hawaiian']
ในตอนต้นของโปรแกรมของเรา เราประกาศรายการชื่อ new_menu ซึ่งจัดเก็บพิซซ่าทั้งหมดบนเมนูใหม่
จากนั้น เราประกาศตัวแปรชื่อ final_new_menu ซึ่งจัดเก็บเมนูที่แก้ไขแล้ว ตัวแปรนี้แปลงตัวแปร new_menu เป็นเซ็ตโดยใช้ set() จากนั้นแปลงเซ็ตกลับเป็นรายการโดยใช้ list() กระบวนการนี้ลบค่าซ้ำทั้งหมดในตัวแปร new_menu ของเรา
สุดท้าย โปรแกรมของเราพิมพ์เมนูใหม่ไปที่คอนโซล องค์ประกอบที่ไม่ซ้ำกันทั้งหมดจากออบเจ็กต์รายการต้นฉบับปรากฏ ตอนนี้เรามีรายการที่ไม่ซ้ำกันแล้ว
สรุป
การลบรายการซ้ำออกจากรายการเป็นการดำเนินการที่พบบ่อยใน Python ไม่มีเมธอดอย่างเป็นทางการที่ควรใช้เพื่อลบรายการซ้ำจากรายการ แนวทางที่พบบ่อยที่สุดคือการใช้ฟังก์ชัน fromkeys() ของดิกชันนารี หรือแปลงข้อมูลของคุณเป็นเซ็ต
ในคู่มือนี้ เราอภิปรายวิธีใช้ฟังก์ชัน fromkeys() ของดิกชันนารีและเซ็ตเพื่อลบรายการซ้ำจากรายการใน Python
หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับการเขียนโปรแกรม Python โปรดอ่านคู่มือ How to Learn Python ของเรา