มาทำความเข้าใจความสัมพันธ์ของ Dictionary in Python กันเทอะ !
สวัสดีครับ ช่วงนี้ได้มีโอกาสใช้งาน Django framework ซึ่งมีการใช้งาน Object type Dictionary ค่อนข้างมาก เลยอยากเขียนเคสความสัมพันธ์ซับซ้อน(ในความคิดเห็นของผม)
Requirement
- installed Python ver. 2.7 / 3+
For Windows : https://phoenixnap.com/kb/how-to-install-python-3-windows
For MacOS : https://docs.python-guide.org/starting/install3/osx/
การนำเสนอของผม ผมจะใช้ Python shell บน Terminal เป็นหลัก
หลักสำคัญของ Dictionary นั้น คือ รูปแบบโครงสร้างข้อมูล(Data structure) ที่เหมาะสำหรับการ Group Object ในความเข้าใจของผมคือการจับคู่ ของ Keys / Values ครับ
เริ่มกันเลย
- เปิด Terminal ขึ้นมา และ พิม Python
- จากนั้นเราจะเข้าสู่ Python Shell
เริ่มด้วยการสร้าง Dictionary ของเรา โดยเราจะสร้าง Dictionary ชื่อ Movie นะครับ
movie = {
"name" : "AAA-001" ,
"subtitle":"Thai",
"star":"Tiw Lip",
}
โอเคครับ อันนี้เริ่มต้นเบาๆด้วยการ Print ชื่อของหนังออกมา
print(Dictname[key]) ซึ่งเราก็จะได้ Value ที่เป็นชื่อหนังของเราออกมา
แล้วถ้าใน Dictionary ของเรามี Dictionary อยู่ข้างในอีกทีล่ะ ?
เราจะสร้าง Dictionary ใหม่ ชื่อ movies
movies = {
"name" : "AAA-001" ,
"subtitle":{
"Thai",
"Eng"
},
"star": {
"actor":"Tiw Lip",
"actress":"Sora"
},
}
เรามาลอง print dir(movies) ดู จะได้รู้ว่าเราสามารถทำอะไรกับ Object นี้ได้บ้าง
แต่ถ้าเราอยากได้value เฉพาะ นักแสดงนำชาย(actor)ของ starล่ะ
แล้วเราใช้ index ในการ ดึงvalue ของ Dict ได้ไหมนะ ?
งั้นเรา get values ทั้งหมดของstar มาแล้วใส่ ตำแหน่งดีไหม
ทีนี้เรามาลองเปลี่ยน Type ของ Dict แล้วดึงvalue ออกมา
แล้วแบบไหนล่ะที่เราสามารถ ใช้ index ดึง value ออกมาได้ ?
เราจะมาปรับtype object ของเรานิดหน่อย star เดิมเป็น{} เปลี่ยนเป็น[]
movies = {
"star": [
{
"actor":"Tiw Lip",
},
{
"actor":"MN ANP",
},
],
}
ซึ่งจากเคสแบบนี้เราจะเห็นว่า key มันเหมือนกันอะ แล้วจะget value คนแรกยังไงดี
เราเลยใช้ index ในการget valuesออกมา แต่มันดันติด keyมาด้วย ข้างในเป็น Dict รึป่าวนะ ?
เรามาลองใช้วิธีเดิม ใช้ key ของ nested dict มาดึงvalue เราจะพบว่ามันติดปัญหาว่า Type List ไม่สามารถดึง keyได้ ตามรูปด้านล่าง
เราก็เลยต้องระบุindex ของList ก่อน
เท่านี้เราก็จะสามารถดึงValue ออกมาได้ แม้ความสัมพันธ์จะซับซ้อนแค่ไหน ขอแค่เข้าใจมัน
สรุป
“ ในทุกๆความสัมพันธ์เราต้องเข้าใจรูปแบบของมัน และชัดเจนกับมัน เมื่อเราเข้าใจในทุกๆความสัมพันธ์ เราก็จะเห็นคุณค่าของความสัมพันธ์ ”
ในการเลือกใช้ Data structure รูปแบบไหน ควรคำนึงถึงเคสการนำไปใช้ให้ดี ซึ่งเราจะเห็นข้อแตกต่าง ระหว่างแบบที่มี List ครอบ Dict เพราะ ในList มีชื่อ key ที่เหมือนกัน กับ อีกแบบที่ใช้ dict[key][nested key] ดึงข้อมูลออกมา เพราะ key ใน nested dict key แตกต่างกัน
ขอบคุณที่อ่านจนจบ หากผิดพลาดประการใด ขออภัยนะครับ
และสุดท้าย ไอเดียในการขยายความสัมพันธ์ ของ Dictionary ใน Python เกิดขึ้นได้หลังจากเรียน Django จากพี่แอร์ แมวใบไม้ ครองโลก Airmee Chanita Anuwong ขอบคุณครับ