[Python] EP 5: Collections (Set)

Master
Artisan Brain Academy
2 min readSep 8, 2019

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

basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}

ผลลัพธ์ที่ได้จะเป็นข้อมูลที่ ไม่ซ้ำกัน และ ข้อมูลจะไม่เรียงเหมือนที่เราได้ตั้งค่าไว้เริ่มแรก!!!! แต่จะมีฟังก์ชั่นทางคณิตศาตร์ ได้แก่ union, intersection, difference and symmetric difference เราไม่ดูการทำงานฟังก์ชั่นเหล่านี้กัน

หากต้องการค้นว่าใน basket มี orange ไหมเราสามารถใช้ท่านี้ได้

found_orange = 'orange' in basket
if found_orange:
print("found")
else:
print("not found")

เรามาดูกันอีกตัวอย่างกันนะครับ

basket_one = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
basket_two = {'apple', 'banana'}

ถ้าต้องการอยากทราบว่า set b เป็น subset ของ set a หรือไม่จะใช้คำสั่งนี้

basket_two.issubset(basket_one) # True
basket_two <= basket_one # True

ถ้าต้องการดูว่าข้อมูลทั้ง 2 sets รวมกันว่ามีอะไรบ้างจะใช้คำสั่งว่า union หรือ |

basket_one.union(basket_one) # {'apple', 'banana', 'orange', 'pear'}
basket_one | basket_two # {'apple', 'banana', 'orange', 'pear'}

ถ้าต้องการดูข้อมูลว่าทั้ง 2 sets มีอะไรที่เหมือนกันจะใช้คำสั่งว่า intersection หรือ &

basket_one & basket_two # {'apple', 'banana'}
basket_one.intersection(basket_two) # {'apple', 'banana'}

ถ้าต้องการดูข้อมูลว่าทั้ง 2 sets มีอะไรที่ set one ไม่ซ้ำกับ set two ใช้คำสั่งว่า difference หรือ -

basket_one - basket_two # {'orange', 'pear'}
basket_one.difference(basket_two) # {'orange', 'pear'}

ถ้าต้องการดูข้อมูลว่าทั้ง 2 sets มีอะไรที่ไม่ซ้ำกันจะใช้คำสั่งว่า symmetric_difference หรือ ^

basket_one ^basket_two # {'orange', 'pear'}
basket_one.symmetric_difference(basket_two) # {'orange', 'pear'}

สรุปว่าการใช้ Set นั้นเหมาะกับข้อมูล 2 ชุดขึ้นไป ที่ต้องการหาข้อมูลที่ซ้ำ / ไม่ซ้ำกันออกมาเป็นต้น เช่นดึงข้อมูลวันหยุดพนักงานมาทั้งหมด แล้วอยากรู้ว่าปีนี้ พนักงานทั้งหมดลาหยุดวันไหนกันบ้าง และวันหยุดวันไหนที่มีคนลาเยอะที่สุด

หวังว่าบทความนี้ จะเป็นประโยชน์กันบ้างนะครับผม แล้วพบกัน EP 6 นะครับ
Happy Coding!!!!

--

--