มาพูดถึงโครงสร้างข้อมูลต่อไปของเรากัน
และอันนี้เรียกว่าพจนานุกรม
ในภาษาอื่นๆ
อาจเรียกว่าตารางแฮช อาจเป็นแผนที่หรืออ็อบเจ็กต์
ใน Python เรามีแนวคิดเกี่ยวกับพจนานุกรม
หรืออย่างที่ Python ชอบเรียกมันว่า dict
ฉันต้องแน่ใจว่าฉันออกเสียงถูกต้อง
นั่นเป็นคำที่ยากจริงๆ ที่จะพูดเมื่อคุณกำลังบันทึกและทำซ้ำซ้ำแล้วซ้ำเล่า
พจนานุกรม.
มันคืออะไร?
มันเป็นชนิดข้อมูลใน Python แต่ก็เป็นโครงสร้างข้อมูลด้วย
จำไว้ว่าฉันได้กล่าวถึงแนวคิดของโครงสร้างข้อมูลนี้เมื่อเราพูดถึงรายการ
มีโครงสร้างข้อมูลแรกใน Python ที่เราเรียนรู้
เป็นวิธีที่เราจัดระเบียบข้อมูลในรูปแบบที่มีข้อดีและข้อเสียที่แตกต่างกันในการเข้าถึงข้อมูล
เช่น กับรายการ
เราเห็นว่าสั่งง่าย
เราสามารถเข้าถึงได้ผ่านดัชนีเหมือนศูนย์หนึ่ง
เราสามารถย้อนกลับได้ เราสามารถแทรกเข้าไปได้
มันดีมากจริงๆ
แล้วพจนานุกรมล่ะ?
มาดูกันว่าพจนานุกรมหน้าตาเป็นอย่างไร
พจนานุกรม?
ดูสิ ของแบบนี้จะมีกุญแจ
และมีค่า
แล้วก็จุลภาคอีกอัน
แล้วก็กุญแจอีกอัน
และอีกหนึ่งคุณค่า
มาถอดรหัสสิ่งนี้กัน
ดังนั้นฉันจึงใช้วงเล็บปีกกา ซึ่งหมายถึงพจนานุกรม
และไม่เหมือนรายการ เรามีสิ่งที่เราเรียกว่าคู่ค่าคีย์
กุญแจสำคัญคือสายอักขระให้เราคว้าค่า
ฉันหมายถึงอะไร
เพื่อให้เราเข้าถึงค่าเหล่านี้ได้ ฉันจะเปิดพจนานุกรม
แล้วพูดคีย์ในกรณีของเรา สมมติว่าเราต้องการคว้า B เราจะคว้ากุญแจ จากนั้นเมื่อเราพิมพ์
ได้ยินผลลัพธ์
เราก็ได้คุณค่าเช่นกัน
เรากำลังบอกคอมพิวเตอร์ว่า เฮ้ ฉันมีพจนานุกรมตัวแปรนี้
จำไว้ว่าฉันสามารถตั้งชื่อสิ่งนี้อะไรก็ได้ที่ฉันต้องการ
ฉันมีพจนานุกรมตัวแปรนี้
ฉันต้องการให้คุณไปหาคีย์ B และคีย์ B นี้ หากมีอยู่ คว้าค่ามาให้ฉัน
มันจะเข้าไปในหน่วยความจำของคุณหรือเข้าไปในหน่วยความจำของเครื่อง
มันจะค้นหาตำแหน่งที่ B ถูกเก็บไว้ในหน่วยความจำของเราและคว้าค่า
ดังนั้นในชั้นหนังสือ B เราจึงมีค่าเท่ากับว่าถ้าเราทำ C ซึ่งไม่มีอยู่จริง
ถ้าฉันคลิกเรียกใช้ ไม่ ฉันพบข้อผิดพลาด
มันบอกฉันว่า เฮ้ ขอโทษ คุณกำลังหาคีย์ C แต่ฉันไม่มีคีย์นั้นจริงๆ
และนี่คือสิ่งที่เป็นพจนานุกรม
พจนานุกรมเป็นคู่ค่าคีย์ที่ไม่เรียงลำดับ
สิ่งที่ฉันหมายถึงโดยที่ไม่เป็นระเบียบนั้นหมายความว่าพวกเขาไม่ได้อยู่ติดกันในความทรงจำ
จำไว้ว่า ด้วยรายการ เราสามารถเข้าถึงรายการที่มีดัชนีศูนย์ จากนั้นดัชนีหนึ่ง ดัชนีสอง ชั้นวางหนังสือทั้งหมดเหล่านั้น
หรือพจนานุกรมที่อยู่ติดกัน
ในทางกลับกัน พวกมันอยู่ทั่วทุกแห่ง
แม้ว่าฉันจะใส่ A และ B ที่นี่
นี่อาจอยู่ที่จุดหนึ่งในความทรงจำ และอีกจุดหนึ่งในความทรงจำ
และถ้าผมเพิ่มเข้าไป สมมุติว่า X นี่จะเป็นอีกจุดหนึ่งในความทรงจำ
และอาจไม่เป็นระเบียบ
บางทีฉันอาจเขียนว่า a, b, x แต่เมื่อฉันส่งคืนพจนานุกรมทั้งหมดจริงๆ
บางทีฉันอาจไม่มีสิ่งนี้
สิ่งเหล่านี้กระจัดกระจายไปทั่วความทรงจำของเรา
อย่างที่คุณเห็นที่นี่ เมื่อฉันได้รับพจนานุกรม ฉันได้รับสิ่งเหล่านี้ตามลำดับ
แต่นั่นเป็นเพียงเพราะมันเล็ก
ถ้าฉันมีพจนานุกรมขนาดใหญ่จริงๆ ฉันอาจจะไม่มีพจนานุกรมนั้นเพื่อใส่เข้าไป
ดังนั้นพจนานุกรมจึงเป็นคู่ค่าคีย์ที่ไม่เรียงลำดับ
และตราบใดที่เรารู้กุญแจ นั่นคือสิ่งที่เราต้องการกุญแจ จากนั้นเราก็ให้สิ่งนั้น และคอมพิวเตอร์ของเราก็จะรู้ว่า
เฮ้ ตำแหน่งไหนในความทรงจำที่จะมองหาเพื่อคว้าค่า
นี่คือสิ่งที่เจ๋งเกี่ยวกับโครงสร้างข้อมูล เช่น พจนานุกรมและรายการ
เป็นคอนเทนเนอร์ที่อยู่รอบ ๆ ข้อมูลใช่ไหม
นี่จึงเป็นอะไรก็ได้ที่เราต้องการ
สมมติว่าเราต้องการให้รายการนี้เป็นรายการ
หนึ่งสองสาม.
บางทีเราต้องการให้เป็นสตริง
สวัสดี?
และบางทีนี่อาจเป็นค่าบูลีน
ชอบ.
จริง.
นั่นถูกต้องสมบูรณ์
ฉันสามารถเข้าถึง A.
เช่นนั้น
และฉันได้รับรายการ
จะทำอย่างไรถ้าฉันต้องการรายการที่สองในรายการ
ผมทำดัชนีแบบนี้
และที่นั่นคุณไป
ฉันเคยไปมาแล้ว และนี่ก็เหมือนกันกับรายการ และคุณจะเห็นสิ่งนี้บ่อยมาก โดยที่ถ้าเรามีรายการหรือเรียกมันว่ารายการของฉัน
และรายการของฉันมีพจนานุกรมที่มี สมมุติว่า ก
หนึ่ง.
และคุณรู้อะไรไหม
ลองคัดลอกและวางสิ่งนี้
เราจะทำสิ่งนี้
เราจะมีรายการแรกในอาร์เรย์
แบบนี้.
จากนั้นจุลภาค
แล้วรายการอื่นในอาร์เรย์
และคราวนี้ อันนี้มีสี่ ห้า หก
เพื่อให้ฉันสามารถคว้าจากรายการของฉัน
ที่.
รายการแรก.
ในอาร์เรย์
แล้วอาจจะคว้า
A ที่เป็นกุญแจสำคัญ
จำไว้ว่านี่คือเชือก และเราต้องการที่จะคว้า สมมุติว่ารายการที่สาม
งั้นเราไปกันเถอะ
ถึง.
ถ้าฉันเรียกใช้สิ่งนี้ฉันควรจะได้สามและสอง
ไปเลย
ตอนนี้ คุณอาจจะถามตัวเองว่า โครงสร้างข้อมูลเหล่านี้เกี่ยวข้องกันอย่างไร
เช่น ทำไมเราต้องมีพจนานุกรม?
ทำไมเราต้องมีรายการ?
ทำไมเราถึงมีสิ่งเดียวที่ทำได้ทุกอย่าง?
มันไม่ง่ายกว่าเหรอ?
ลองคิดดู เพราะในวิดีโอหน้า ฉันจะพยายามตอบคำถามนั้นให้คุณ