WEBVTT

00:00.680 --> 00:03.460
มาพูดถึงโครงสร้างข้อมูลต่อไปของเรากัน

00:03.470 --> 00:07.280
และอันนี้เรียกว่าพจนานุกรม

00:08.740 --> 00:09.910
ในภาษาอื่นๆ

00:09.910 --> 00:13.990
อาจเรียกว่าตารางแฮช อาจเป็นแผนที่หรืออ็อบเจ็กต์

00:14.790 --> 00:18.240
ใน Python เรามีแนวคิดเกี่ยวกับพจนานุกรม

00:18.420 --> 00:21.390
หรืออย่างที่ Python ชอบเรียกมันว่า dict

00:21.690 --> 00:23.460
ฉันต้องแน่ใจว่าฉันออกเสียงถูกต้อง

00:23.460 --> 00:28.890
นั่นเป็นคำที่ยากจริงๆ ที่จะพูดเมื่อคุณกำลังบันทึกและทำซ้ำซ้ำแล้วซ้ำเล่า

00:29.010 --> 00:30.060
พจนานุกรม.

00:30.300 --> 00:31.410
มันคืออะไร?

00:31.440 --> 00:35.790
มันเป็นชนิดข้อมูลใน Python แต่ก็เป็นโครงสร้างข้อมูลด้วย

00:36.240 --> 00:40.590
จำไว้ว่าฉันได้กล่าวถึงแนวคิดของโครงสร้างข้อมูลนี้เมื่อเราพูดถึงรายการ

00:40.830 --> 00:45.480
มีโครงสร้างข้อมูลแรกใน Python ที่เราเรียนรู้

00:45.570 --> 00:53.790
เป็นวิธีที่เราจัดระเบียบข้อมูลในรูปแบบที่มีข้อดีและข้อเสียที่แตกต่างกันในการเข้าถึงข้อมูล

00:53.790 --> 00:56.490
เช่น กับรายการ

00:56.670 --> 00:59.330
เราเห็นว่าสั่งง่าย

00:59.340 --> 01:02.460
เราสามารถเข้าถึงได้ผ่านดัชนีเหมือนศูนย์หนึ่ง

01:02.460 --> 01:05.080
เราสามารถย้อนกลับได้ เราสามารถแทรกเข้าไปได้

01:05.100 --> 01:06.720
มันดีมากจริงๆ

01:06.750 --> 01:08.220
แล้วพจนานุกรมล่ะ?

01:08.730 --> 01:11.100
มาดูกันว่าพจนานุกรมหน้าตาเป็นอย่างไร

01:11.250 --> 01:12.420
พจนานุกรม?

01:13.970 --> 01:17.720
ดูสิ ของแบบนี้จะมีกุญแจ

01:18.520 --> 01:19.900
และมีค่า

01:20.770 --> 01:21.790
แล้วก็จุลภาคอีกอัน

01:21.790 --> 01:23.290
แล้วก็กุญแจอีกอัน

01:24.490 --> 01:26.380
และอีกหนึ่งคุณค่า

01:27.510 --> 01:28.710
มาถอดรหัสสิ่งนี้กัน

01:28.950 --> 01:33.930
ดังนั้นฉันจึงใช้วงเล็บปีกกา ซึ่งหมายถึงพจนานุกรม

01:34.260 --> 01:38.880
และไม่เหมือนรายการ เรามีสิ่งที่เราเรียกว่าคู่ค่าคีย์

01:39.180 --> 01:45.630
กุญแจสำคัญคือสายอักขระให้เราคว้าค่า

01:46.540 --> 01:47.380
ฉันหมายถึงอะไร

01:47.410 --> 01:52.270
เพื่อให้เราเข้าถึงค่าเหล่านี้ได้ ฉันจะเปิดพจนานุกรม

01:53.450 --> 02:00.200
แล้วพูดคีย์ในกรณีของเรา สมมติว่าเราต้องการคว้า B เราจะคว้ากุญแจ จากนั้นเมื่อเราพิมพ์

02:00.200 --> 02:02.150
ได้ยินผลลัพธ์

02:04.600 --> 02:06.220
เราก็ได้คุณค่าเช่นกัน

02:06.610 --> 02:10.900
เรากำลังบอกคอมพิวเตอร์ว่า เฮ้ ฉันมีพจนานุกรมตัวแปรนี้

02:10.900 --> 02:12.970
จำไว้ว่าฉันสามารถตั้งชื่อสิ่งนี้อะไรก็ได้ที่ฉันต้องการ

02:13.120 --> 02:15.190
ฉันมีพจนานุกรมตัวแปรนี้

02:15.190 --> 02:21.760
ฉันต้องการให้คุณไปหาคีย์ B และคีย์ B นี้ หากมีอยู่ คว้าค่ามาให้ฉัน

02:21.760 --> 02:25.300
มันจะเข้าไปในหน่วยความจำของคุณหรือเข้าไปในหน่วยความจำของเครื่อง

02:25.300 --> 02:30.360
มันจะค้นหาตำแหน่งที่ B ถูกเก็บไว้ในหน่วยความจำของเราและคว้าค่า

02:30.370 --> 02:37.690
ดังนั้นในชั้นหนังสือ B เราจึงมีค่าเท่ากับว่าถ้าเราทำ C ซึ่งไม่มีอยู่จริง

02:37.690 --> 02:40.570
ถ้าฉันคลิกเรียกใช้ ไม่ ฉันพบข้อผิดพลาด

02:40.570 --> 02:44.830
มันบอกฉันว่า เฮ้ ขอโทษ คุณกำลังหาคีย์ C แต่ฉันไม่มีคีย์นั้นจริงๆ

02:45.130 --> 02:47.590
และนี่คือสิ่งที่เป็นพจนานุกรม

02:47.620 --> 02:52.000
พจนานุกรมเป็นคู่ค่าคีย์ที่ไม่เรียงลำดับ

02:52.390 --> 02:58.030
สิ่งที่ฉันหมายถึงโดยที่ไม่เป็นระเบียบนั้นหมายความว่าพวกเขาไม่ได้อยู่ติดกันในความทรงจำ

02:58.030 --> 03:04.750
จำไว้ว่า ด้วยรายการ เราสามารถเข้าถึงรายการที่มีดัชนีศูนย์ จากนั้นดัชนีหนึ่ง ดัชนีสอง ชั้นวางหนังสือทั้งหมดเหล่านั้น

03:04.780 --> 03:09.040
หรือพจนานุกรมที่อยู่ติดกัน

03:09.040 --> 03:11.500
ในทางกลับกัน พวกมันอยู่ทั่วทุกแห่ง

03:11.500 --> 03:13.600
แม้ว่าฉันจะใส่ A และ B ที่นี่

03:13.600 --> 03:18.280
นี่อาจอยู่ที่จุดหนึ่งในความทรงจำ และอีกจุดหนึ่งในความทรงจำ

03:18.760 --> 03:23.710
และถ้าผมเพิ่มเข้าไป สมมุติว่า X นี่จะเป็นอีกจุดหนึ่งในความทรงจำ

03:24.310 --> 03:27.590
และอาจไม่เป็นระเบียบ

03:27.610 --> 03:33.010
บางทีฉันอาจเขียนว่า a, b, x แต่เมื่อฉันส่งคืนพจนานุกรมทั้งหมดจริงๆ

03:33.130 --> 03:36.080
บางทีฉันอาจไม่มีสิ่งนี้

03:36.100 --> 03:38.830
สิ่งเหล่านี้กระจัดกระจายไปทั่วความทรงจำของเรา

03:39.820 --> 03:43.870
อย่างที่คุณเห็นที่นี่ เมื่อฉันได้รับพจนานุกรม ฉันได้รับสิ่งเหล่านี้ตามลำดับ

03:43.870 --> 03:45.760
แต่นั่นเป็นเพียงเพราะมันเล็ก

03:45.760 --> 03:51.520
ถ้าฉันมีพจนานุกรมขนาดใหญ่จริงๆ ฉันอาจจะไม่มีพจนานุกรมนั้นเพื่อใส่เข้าไป

03:52.320 --> 03:57.000
ดังนั้นพจนานุกรมจึงเป็นคู่ค่าคีย์ที่ไม่เรียงลำดับ

03:57.600 --> 04:04.200
และตราบใดที่เรารู้กุญแจ นั่นคือสิ่งที่เราต้องการกุญแจ จากนั้นเราก็ให้สิ่งนั้น และคอมพิวเตอร์ของเราก็จะรู้ว่า

04:04.200 --> 04:09.930
เฮ้ ตำแหน่งไหนในความทรงจำที่จะมองหาเพื่อคว้าค่า

04:10.770 --> 04:15.470
นี่คือสิ่งที่เจ๋งเกี่ยวกับโครงสร้างข้อมูล เช่น พจนานุกรมและรายการ

04:15.480 --> 04:18.330
เป็นคอนเทนเนอร์ที่อยู่รอบ ๆ ข้อมูลใช่ไหม

04:18.330 --> 04:21.460
นี่จึงเป็นอะไรก็ได้ที่เราต้องการ

04:21.480 --> 04:23.790
สมมติว่าเราต้องการให้รายการนี้เป็นรายการ

04:23.790 --> 04:25.530
หนึ่งสองสาม.

04:25.620 --> 04:28.290
บางทีเราต้องการให้เป็นสตริง

04:28.620 --> 04:29.300
สวัสดี?

04:29.310 --> 04:32.040
และบางทีนี่อาจเป็นค่าบูลีน

04:32.070 --> 04:32.340
ชอบ.

04:32.340 --> 04:32.910
จริง.

04:33.910 --> 04:35.680
นั่นถูกต้องสมบูรณ์

04:35.860 --> 04:39.100
ฉันสามารถเข้าถึง A.

04:39.980 --> 04:40.730
เช่นนั้น

04:40.730 --> 04:41.870
และฉันได้รับรายการ

04:41.870 --> 04:44.770
จะทำอย่างไรถ้าฉันต้องการรายการที่สองในรายการ

04:44.780 --> 04:47.480
ผมทำดัชนีแบบนี้

04:49.430 --> 04:50.340
และที่นั่นคุณไป

04:50.360 --> 04:58.250
ฉันเคยไปมาแล้ว และนี่ก็เหมือนกันกับรายการ และคุณจะเห็นสิ่งนี้บ่อยมาก โดยที่ถ้าเรามีรายการหรือเรียกมันว่ารายการของฉัน

04:58.250 --> 05:06.650
และรายการของฉันมีพจนานุกรมที่มี สมมุติว่า ก

05:07.980 --> 05:08.880
หนึ่ง.

05:09.710 --> 05:10.330
และคุณรู้อะไรไหม

05:10.340 --> 05:11.820
ลองคัดลอกและวางสิ่งนี้

05:11.840 --> 05:13.070
เราจะทำสิ่งนี้

05:14.050 --> 05:16.480
เราจะมีรายการแรกในอาร์เรย์

05:19.120 --> 05:20.120
แบบนี้.

05:20.140 --> 05:21.270
จากนั้นจุลภาค

05:21.280 --> 05:23.230
แล้วรายการอื่นในอาร์เรย์

05:25.220 --> 05:29.090
และคราวนี้ อันนี้มีสี่ ห้า หก

05:30.580 --> 05:33.610
เพื่อให้ฉันสามารถคว้าจากรายการของฉัน

05:35.330 --> 05:36.140
ที่.

05:37.040 --> 05:38.810
รายการแรก.

05:39.870 --> 05:40.800
ในอาร์เรย์

05:42.040 --> 05:44.200
แล้วอาจจะคว้า

05:45.310 --> 05:48.460
A ที่เป็นกุญแจสำคัญ

05:48.490 --> 05:53.710
จำไว้ว่านี่คือเชือก และเราต้องการที่จะคว้า สมมุติว่ารายการที่สาม

05:53.710 --> 05:54.850
งั้นเราไปกันเถอะ

05:56.580 --> 05:57.120
ถึง.

05:57.630 --> 06:01.110
ถ้าฉันเรียกใช้สิ่งนี้ฉันควรจะได้สามและสอง

06:02.180 --> 06:02.960
ไปเลย

06:03.470 --> 06:08.780
ตอนนี้ คุณอาจจะถามตัวเองว่า โครงสร้างข้อมูลเหล่านี้เกี่ยวข้องกันอย่างไร

06:08.780 --> 06:10.730
เช่น ทำไมเราต้องมีพจนานุกรม?

06:10.730 --> 06:12.260
ทำไมเราต้องมีรายการ?

06:12.260 --> 06:14.240
ทำไมเราถึงมีสิ่งเดียวที่ทำได้ทุกอย่าง?

06:14.240 --> 06:15.590
มันไม่ง่ายกว่าเหรอ?

06:16.190 --> 06:20.330
ลองคิดดู เพราะในวิดีโอหน้า ฉันจะพยายามตอบคำถามนั้นให้คุณ
