Python ตอนที่ 95 ข้อมูลประเภท Set

ใน Python เราสามารถเก็บข้อมูลหลาย ๆ ไอเท็ม ด้วยข้อมูลประเภท Set เช่นเดียวกับข้อมูลประเภท List, Tuple และ Dictionary แต่ก็มีแนวทางการใช้งานที่แตกต่างกัน

ข้อมูลที่เก็บในรูปแบบ Set จะไม่ถูกเรียงลำดับ เปลี่ยนแปลงไม่ได้ (แต่สามารถลบและเพิ่มได้) และไม่มีการทำอินเด็กซ์

การสร้างข้อมูลประเภท Set ใน Python จะใช้เครื่องหมาย curly brackets { } เช่น myset = {"iPhone", "iPad", "iPod"}

myset = {"iPhone", "iPad", "iPod", "iLoveU"}

print(myset)

ลักษณะของข้อมูลที่เก็บในรูปแบบ Set

ข้อมูลที่เก็บในรูปแบบ Set มีลักษณะดังนี้

ไม่มีการเรียงลำดับ

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

myset = {"iPhone", "iPad", "iPod", "iLoveU"}

print(myset)

# {'iPhone', 'iPod', 'iPad', 'iLoveU'}
# {'iPad', 'iPod', 'iLoveU', 'iPhone'}
# เมื่อเรียกใช้ Set ชุดเดิม ในแต่ละครั้งข้อมูลจะเรียงไม่เหมือนกัน

ไม่สามารถเปลี่ยนแปลงได้

ข้อมูลใน Set จะไม่สามารถเปลี่ยนแปลงได้ คือเมื่อเพิ่มข้อมูลเข้าไปใน Set แล้ว เราจะทำการแก้ไขเปลี่ยนแปลงใด ๆ ไม่ได้ แต่เราสามารถลบหรือเพิ่มข้อมูลใหม่เข้าไปเมื่อไหร่ก็ได้

เก็บข้อมูลซ้ำกันไม่ได้

ข้อมูลภายใน Set ไม่สามารถมีค่าที่ซ้ำกันได้ คือเก็บข้อมูลซ้ำกันไม่ได้นั่นเอง ถ้ามีการเพิ่มข้อมูลใหม่เข้าไปใน Set และข้อมูลนั้นซ้ำกันข้อมูลเดิมที่มีอยู่แล้ว ข้อมูลนั้นจะไม่ถูกเก็บใน Set

myset = {"iPhone", "iPad", "iPad", "iPod", "iLoveU", "iPad"}

print(myset)

# {'iPhone', 'iPod', 'iPad', 'iLoveU'}
# ข้อมูลที่ซ้ำกันจะถูกละเว้น

การตรวจสอบจำนวนสมาชิกใน Set

ถ้าต้องการรู้ว่าข้อมูลใน Set มีจำนวนเท่าไหร่ สามารถทำได้โดยการใช้ฟังก์ชัน len()

myset = {"iPhone", "iPad", "iPod", "iLoveU"}

print(len(myset))

# 4

ชนิดข้อมูล

การเก็บข้อมูลใน Set เราสามารถเก็บข้อมูลประเภทใดก็ได้

myset1 = {"iPhone", "iPad", "iPod", "iLoveU"}
myset2 = {9, 8, 7, 6}
myset3 = {True, False}

หรือใน Set เดียวกัน จะเก็บข้อมูลที่มีชนิดข้อมูลแตกต่างกันก็ยังได้

myset = {"iPhone", 9, 8, 7, 6, "iPad", False, "iPod", "iLoveU", True}

print(myset)

ชนิดข้อมูลของ Set

Set มีชนิดข้อมูลเป็นออปเจ็คต์ ‘set’

myset = {"iPhone", 9, 8, 7, 6, "iPad", False, "iPod", "iLoveU", True}

print(type(myset))

# <class 'set'>

Constructor

นอกจากการสร้าง Set ด้วยวิธีปกติดังที่กล่าวแล้ว เรายังสามารถใช้คอนสตรัคเตอร์ set() สำหรับการสร้างข้อมูลประเภท Set ได้อีกด้วย

myset = set(("iPhone", 9, 8, 7, 6, "iPad", False, "iPod", "iLoveU", True))

print(myset)

ข้อแตกต่างระหว่าง Set กับ Collection ประเภทอื่น ๆ ใน Python

Python มีข้อมูลประเภท Collection 4 ประเภท คือ List, Tuple, Set และ Dictionary ซึ่งแต่ละประเภทมีความแตกต่างกันดังนี้

  • List มีการเรียงลำดับ เปลี่ยนแปลงได้ และอนุญาตให้เก็บข้อมูลซ้ำกันได้
  • Tuple มีการเรียงลำดับ เปลี่ยนแปลงไม่ได้ และอนุญาตให้เก็บข้อมูลซ้ำกันได้
  • Set ไม่มีการเรียงลำดับ เปลี่ยนแปลงไม่ได้ ไม่มีอินเด็กซ์ และเก็บข้อมูลซ้ำกันไม่ได้
  • Dictionary มีการเรียงลำดับ (เวอร์ชัน 3.7 ขึ้นไป) เปลี่ยนแปลงข้อมูลได้ เก็บข้อมูลซ้ำกันไม่ได้