6 Types of Python Dictionaries: How to Choose the Right One

14-Feb-24

คัมภีร์เทพ IT

See the original english version Click here!

 

จริง ๆ แล้ว ใน Python Library มาตรฐานจะมี Dictionary อยู่หลายประเภท มันถูกสร้างขึ้นมาเพื่อจุดประสงค์ต่าง ๆ การเข้าใจพวกมันจะทำให้ Python Developers สามารถเลือกใช้ได้ตรงตามความต้องการ และบทความจะมาแนะนำ 6 ประเภทของ Python Dictionaries และวิธีเลือกให้เหมาะกับงาน

Python Dictionary คืออะไร

ใน Python นั้น Dictionary(dict) เป็น Built-in Data Structure ซึ่งถูกใช้ในการจัดเก็บ Collections ของ Data ในรูปแบบ Key-Value Pairs คุณอาจเคยได้ยิน Python Dictionary ในชื่ออื่น ๆ เช่น Lookup Tables, Map, Hashmaps หรือ Associative Arrays

ตัวอย่าง Python Dictionaries ที่ดูจะครอบคลุมที่สุดตัวหนึ่งคือ Phone Books คุณสามารถใช้ Phone Books เพื่อดึงข้อมูล (Value) ที่เกี่ยวข้องกับชื่อที่กำหนด (Key) ได้อย่างรวดเร็ว Python Dictionary จะช่วยให้คุณสามารถจัดเก็บและเรียกค้น Data ที่คุณต้องการได้อย่างมีประสิทธิภาพสูงสุด และนั่นคือสาเหตุที่ Python dict เป็นหนึ่งใน Data Type ที่ถูกใช้บ่อยที่สุดในภาษา Programming นี้

ประเภทของ Python Dictionary

Python Developers ส่วนใหญ่มักจะใช้ Standard Dictionary(dict) สิ่งที่น่าสนใจคือ Python มาพร้อมกับ Built-in Dictionary Data Structures อื่น ๆ อีกด้วย แม้ว่า Python Dictionary ปกติโดยทั่วไปจะเพียงพอกับการใช้งานอยู่แล้ว แต่อย่างน้อย การที่คุณได้รู้จักกับ Dictionary ประเภทอื่น ๆ ด้วยก็น่าจะมีประโยชน์ด้วยเช่นกัน ซึ่ง Python Dictionary ประเภทต่าง ๆ มีดังต่อไปนี้:

1. dict

ดังที่ได้กล่าวไว้ก่อนหน้านี้ Dictionary ประเภทที่พบบ่อยที่สุดใน Python ก็คือ Standard Type ซึ่ง Python Dictionary ประเภทนี้สามารถใช้กับเครื่องหมายปีกกา {} โดยที่ Standard Python Dictionary มาพร้อมกับ Built-in Functions มากมาย ที่จะช่วยให้ชีวิต (และการทำงาน) ของคุณง่ายมากขึ้น

ตัวอย่างการใช้ Standard Python Dictionary

โปรดทราบไว้ว่า Values ใน Python Dictionaries นั้น สามารถเป็นปรเภท (Type) ใดก็ได้ แต่ Key จะต้องไม่ซ้ำกัน (Unique) และไม่เปลี่ยนรูป (Immutable) สำหรับกรณีโดยเฉลี่ยแล้ว มันอาจต้องใช้ O(1) Time Complexity ในการ Lookup, Insert, Update และ Delete ใน Standard Python Dictionary

2. collections.defaultdict

Python Dictionary อีกประเภทหนึ่งใน Python ก็คือ defaultdict ซึ่งสามารถถูก Import จาก collections ได้ โดย Python defaultdictdictionary มักถูกใช้งานในกรณีที่คุณต้องการ Return Default Value ในขณะที่เรียก Key ที่ไม่มีอยู่ จาก Dictionary

ตัวอย่างการใช้ Python defaultdict

Python Developers มักจะใช้ get() Method หรือ เพียงแค่จัดการกับน KeyError Exception ในขณะที่ทำงานกับ Dictionaries ทั่วไป ในกรณีนี้ การใช้ collections.defaultdict จะช่วยทำให้เจาะจงการใช้งานได้ชัดเจนยิ่งขึ้น

3. collections.OrderedDict

collections.OrderedDict เป็น Subclass ของ Python Dictionary ซึ่งถูกเปิดตัวใน Python 3.1 ซึ่งจากชื่อของมัน คุณก็อาจพอเดาได้ว่า Python Dictionary ประเภทนี้ สามารถจดจำลำดับของ Key Insertions ได้ หากคุณค่อนข้างให้ความสำคัญกับลำดับของ Key Insertions ใน Python Dictionary เป็นพิเศษ คุณก็สามารถใช้ collections.OrderedDict ได้

ตัวอย่างการใช้ Python OrderedDict

collections.OrderedDict ยังมี Functions เจ๋ง ๆ ในการเปลี่ยนลำดับของ Keys บางส่วนได้อีกด้วย คุณสามารถใช้ move_to_end เพื่อย้าย Key ใด Key หนึ่งไปยังจุดสิ้นสุด (last=True) หรือจุดเริ่มต้น (last=False) ของ Python Dictionary ของคุณ:

ตัวอย่างการใช้ Python OrderedDict

4. collections.ChainMap

สำหรับ Python Dictionary อีกประเภทหนึ่ง ก็คือ ChainMap ซึ่ง Python ChainMap ก็เป็น Class ที่มีลักษณะคล้ายกับ Dictionary โดยที่สามารถรวมเอาหลาย ๆ Dictionaries เข้ามาไว้ใน View เดียวได้ Dictionary ประเภทนี้ใน Python จะช่วยให้คุณสามารถค้นหา Key จากหลาย ๆ Dictionaries ได้ ราวกับว่า Dictionaries ทั้งหมด ได้ถูกรวมให้อยู่ใน Dictionary เดียว

ตัวอย่างการใช้งาน Python ChainMap

โปรดทราบไว้ว่า ChainMap จะ Return กลับเฉพาะ Key ที่เจอตัวแรกจากสิ่งที่คุณกำลังค้นหา นอกจากนี้ ChainMap จะจัดเก็บเฉพาะสิ่งที่อ้างอิงถึง Objects จริง ๆ เท่านั้น ดังนั้น หากคุณทำการเปลี่ยนแปลง Original Dictionaries ตัว ChainMap ก็จะได้รับการ Update ตามไปด้วย

ตัวอย่างการใช้งาน Python ChainMap

5. collections.Counter

Counter ก็เป็นอีกหนึ่ง Python Dictionaries ที่สามารถนับ Hashable Objects ได้ Python Developers มักจะใช้ collections.Counter เพื่อนับความถี่ของ Elements ในการ Iterable ตัวอย่างเช่น คุณสามารถใช้ Python Dictionary ประเภทนี้เพื่อคำนวณจำนวนคำที่ถูกใช้ในประโยคได้

ตัวอย่างการใช้ Python Counter

หากคุณต้องการแสดงรายการ Elements ที่พบบ่อยที่สุด n รายการและแสดงจำนวน Elements จากที่พบมากที่สุดไปน้อยที่สุด คุณสามารถใช้ most_common Function บน Counter Object ของคุณได้ ถ้า n เป็น None ก็จะแสดงรายการจำนวนของ Elements ทั้งหมด

6. collections.UserDict

Python Dictionary ประเภทสุดท้ายที่จะกล่าวถึง ก็คือ UserDict Dictionary โดย UserDict ยังเป็น Class ที่อยู่ใน collections Module ซึ่ง Class นี้ได้รับการออกแบบเพื่อใช้เป็น Base Class ในการสร้าง Objects ที่มีลักษณะเหมือน Dictionary แบบกำหนดเองได้

คุณสามารถใช้ collections.UserDict เมื่อคุณต้องการกำหนด Data Structures ที่มีลักษณะเหมือน Dictionary ของคุณเอง ลองนึกภาพสถานการณ์ง่าย ๆ ที่คุณต้องคูณแต่ละค่าด้วย 5 ในขณะที่บันทึกค่าเหล่านั้นลงใน Python Dictionary ที่คุณกำหนดขึ้นเอง คุณสามารถใช้ UserDict เพื่อทำสิ่งนั้น ได้ดังนี้:

ตัวอย่างการใช้ Python UserDict

คุณสามารถแทนที่ Functions อื่น ๆ ได้เสมอ เช่น __setitem__()__getitem__() และ __delitem__() เพื่อปรับแต่งลักษณะการทำงานของ Dictionary ของคุณได้มากยิ่งขึ้น

สรุป

และนี่ก็คือ 6 ประเภทของ Python Dictionaries ซึ่งเราจะพบว่า เราสามารถใช้ Dictionaries ประเภทต่าง ๆ ให้เหมาะสมกับแต่ละสถานการณ์ได้ แม้ว่า Python Developers จำนวนมากจะใช้ Dictionary ทั่วไป แต่คุณก็ยังสามารถใช้ Python Dictionaries ประเภทอื่น ๆ ใน Projects ของคุณได้อย่างอิสระ แต่หากไม่มี Dictionaries ใดที่เหมาะกับคุณ คุณก็สามารถใช้ UserDict Class เพื่อสร้าง Classes ที่มีลักษณะเหมือน Dictionary ของคุณเองได้

ที่มา: https://medium.com/

 

 

รับตำแหน่งงานไอทีใหม่ๆ ด้วยบริการ IT Job Alert

 

อัพเดทบทความจากคนวงในสายไอทีทาง LINE ก่อนใคร
อย่าลืมแอดไลน์ @techstarth เป็นเพื่อนนะคะ

เพิ่มเพื่อน

 

บทความล่าสุด