Lợi thế của từ điển trong python
Python cung cấp một kiểu dữ liệu tổng hợp khác được gọi là từ điển, tương tự như danh sách ở chỗ nó là một tập hợp các đối tượng Show
Đây là những gì bạn sẽ học trong hướng dẫn này. Bạn sẽ đề cập đến các đặc điểm cơ bản của từ điển Python và tìm hiểu cách truy cập và quản lý dữ liệu từ điển. Khi bạn đã hoàn thành hướng dẫn này, bạn sẽ hiểu rõ khi nào từ điển là kiểu dữ liệu thích hợp để sử dụng và cách thực hiện Từ điển và danh sách chia sẻ các đặc điểm sau
Từ điển khác với danh sách chủ yếu ở cách các phần tử được truy cập
Lấy bài kiểm tra. Kiểm tra kiến thức của bạn với bài kiểm tra tương tác “Từ điển Python” của chúng tôi. Sau khi hoàn thành, bạn sẽ nhận được điểm số để có thể theo dõi quá trình học tập của mình theo thời gian Lấy bài kiểm tra " Định nghĩa một từ điểnTừ điển là triển khai của Python về cấu trúc dữ liệu thường được gọi là mảng kết hợp. Một từ điển bao gồm một tập hợp các cặp khóa-giá trị. Mỗi cặp khóa-giá trị ánh xạ khóa với giá trị được liên kết của nó Bạn có thể định nghĩa một từ điển bằng cách đặt một danh sách các cặp khóa-giá trị được phân tách bằng dấu phẩy trong dấu ngoặc nhọn ( 6). Dấu hai chấm ( 7) phân tách mỗi khóa khỏi giá trị được liên kết của nó
Phần sau định nghĩa một từ điển ánh xạ một vị trí tới tên của đội bóng chày Major League tương ứng của nó >>>
Bạn cũng có thể xây dựng một từ điển với chức năng 8 được tích hợp sẵn. Đối số của 8 phải là một chuỗi các cặp khóa-giá trị. Một danh sách các bộ dữ liệu hoạt động tốt cho việc này
0 sau đó cũng có thể được định nghĩa theo cách này>>>
Nếu các giá trị khóa là các chuỗi đơn giản, chúng có thể được chỉ định làm đối số từ khóa. Vì vậy, đây là một cách khác để định nghĩa 0>>>
Khi bạn đã xác định một từ điển, bạn có thể hiển thị nội dung của nó, giống như bạn có thể làm cho một danh sách. Tất cả ba định nghĩa hiển thị ở trên xuất hiện như sau khi được hiển thị >>>
Các mục trong từ điển hiển thị theo thứ tự chúng được xác định. Nhưng điều đó không liên quan khi lấy chúng. Các phần tử từ điển không được truy cập bằng chỉ mục số >>> 2Có lẽ bạn vẫn muốn sắp xếp từ điển của mình. Nếu đúng như vậy, hãy xem Sắp xếp từ điển Python. Giá trị, khóa và hơn thế nữa Loại bỏ các quảng cáoTruy cập các giá trị từ điểnTất nhiên, các yếu tố từ điển phải được truy cập bằng cách nào đó. Nếu bạn không lấy chúng theo chỉ mục, thì làm cách nào để bạn lấy chúng? Một giá trị được lấy từ một từ điển bằng cách chỉ định khóa tương ứng của nó trong dấu ngoặc vuông ( 2)>>> 4Nếu bạn đề cập đến một khóa không có trong từ điển, Python sẽ đưa ra một ngoại lệ >>> 5Thêm một mục vào từ điển hiện có chỉ đơn giản là gán một khóa và giá trị mới >>> 6Nếu bạn muốn cập nhật một mục nhập, bạn chỉ cần gán một giá trị mới cho một khóa hiện có >>> 0Để xóa một mục nhập, hãy sử dụng câu lệnh 3, chỉ định khóa cần xóa>>> 1Biến đi, Seahawks. Bạn là một đội NFL Phím từ điển vs. Liệt kê các chỉ sốBạn có thể nhận thấy rằng trình thông dịch đưa ra cùng một ngoại lệ, 4, khi từ điển được truy cập bằng khóa không xác định hoặc bằng chỉ mục số>>> 2Trên thực tế, đó là cùng một lỗi. Trong trường hợp sau, 5 trông giống như một chỉ mục số, nhưng không phảiSau này, bạn sẽ thấy trong hướng dẫn này rằng một đối tượng thuộc bất kỳ loại bất biến nào cũng có thể được sử dụng làm khóa từ điển. Theo đó, không có lý do gì bạn không thể sử dụng số nguyên >>> 3Trong các biểu thức 6, 7 và 8, các số trong ngoặc vuông xuất hiện như thể chúng có thể là các chỉ số. Nhưng chúng không liên quan gì đến thứ tự của các mục trong từ điển. Python đang diễn giải chúng dưới dạng các khóa từ điển. Nếu bạn xác định cùng một từ điển này theo thứ tự ngược lại, bạn vẫn nhận được các giá trị giống nhau khi sử dụng cùng các khóa>>> 4Cú pháp có thể giống nhau, nhưng bạn không thể coi từ điển như một danh sách >>> 5Ghi chú. Mặc dù quyền truy cập vào các mục trong từ điển không phụ thuộc vào thứ tự, nhưng Python đảm bảo rằng thứ tự của các mục trong từ điển được giữ nguyên. Khi được hiển thị, các mục sẽ xuất hiện theo thứ tự chúng được xác định và việc lặp qua các phím cũng sẽ diễn ra theo thứ tự đó. Các mục được thêm vào từ điển được thêm vào cuối. Nếu các mục bị xóa, thứ tự của các mục còn lại sẽ được giữ lại Bạn chỉ có thể tin tưởng vào việc duy trì trật tự này rất gần đây. đó là. Tuy nhiên, đó là sự thật kể từ phiên bản 3. 6 cũng vậy—tình cờ là kết quả của việc triển khai nhưng không được đảm bảo bởi đặc tả ngôn ngữ Loại bỏ các quảng cáoXây dựng từ điển tăng dầnXác định một từ điển bằng cách sử dụng dấu ngoặc nhọn và danh sách các cặp khóa-giá trị, như được hiển thị ở trên, sẽ ổn nếu bạn biết trước tất cả các khóa và giá trị. Nhưng nếu bạn muốn xây dựng một từ điển nhanh chóng thì sao? Bạn có thể bắt đầu bằng cách tạo một từ điển trống, được chỉ định bởi dấu ngoặc nhọn trống. Sau đó, bạn có thể thêm từng khóa và giá trị mới >>> 6Khi từ điển được tạo theo cách này, các giá trị của nó được truy cập giống như bất kỳ từ điển nào khác >>> 7Truy xuất các giá trị trong danh sách phụ hoặc từ điển phụ yêu cầu một chỉ mục hoặc khóa bổ sung >>> 8Ví dụ này thể hiện một tính năng khác của từ điển. các giá trị trong từ điển không cần phải cùng loại. Trong 9, một số giá trị là chuỗi, một là số nguyên, một là danh sách và một là từ điển khácGiống như các giá trị trong từ điển không cần phải cùng loại, các khóa cũng vậy. >>> 9Ở đây, một trong các khóa là số nguyên, một là số float và một là Boolean. Không rõ điều này sẽ hữu ích như thế nào, nhưng bạn không bao giờ biết Lưu ý mức độ linh hoạt của từ điển Python. Trong 0, cùng một thông tin (tên đội bóng chày) được lưu giữ cho từng vị trí địa lý khác nhau. Mặt khác, 9 lưu trữ các loại dữ liệu khác nhau cho một ngườiBạn có thể sử dụng từ điển cho nhiều mục đích vì có rất ít giới hạn về khóa và giá trị được phép. Nhưng có một số. đọc tiếp Hạn chế về khóa từ điểnHầu hết mọi loại giá trị đều có thể được sử dụng làm khóa từ điển trong Python. Bạn vừa thấy ví dụ này, trong đó các đối tượng số nguyên, float và Boolean được sử dụng làm khóa >>> 0Bạn thậm chí có thể sử dụng các đối tượng tích hợp sẵn như kiểu và hàm >>> 1Tuy nhiên, có một số hạn chế mà các khóa từ điển phải tuân theo Đầu tiên, một khóa nhất định chỉ có thể xuất hiện trong từ điển một lần. Khóa trùng lặp không được phép. Từ điển ánh xạ mỗi khóa thành một giá trị tương ứng, vì vậy sẽ không hợp lý khi ánh xạ một khóa cụ thể nhiều lần Ở trên, bạn đã thấy rằng khi bạn gán một giá trị cho khóa từ điển đã tồn tại, nó không thêm khóa lần thứ hai mà thay thế giá trị hiện có >>> 2Tương tự, nếu bạn chỉ định một khóa lần thứ hai trong quá trình tạo từ điển lần đầu, lần xuất hiện thứ hai sẽ ghi đè lần đầu tiên >>> 3Biến đi, Timberwolves. Bạn là một đội NBA. Sắp xếp Thứ hai, khóa từ điển phải thuộc loại không thay đổi. Bạn đã thấy các ví dụ trong đó một số kiểu bất biến mà bạn quen thuộc—số nguyên, số float, chuỗi và Boolean—được dùng làm khóa từ điển Một bộ dữ liệu cũng có thể là một khóa từ điển, bởi vì các bộ dữ liệu là bất biến >>> 4(Nhớ lại từ cuộc thảo luận về một lý do cơ bản để sử dụng một bộ thay vì một danh sách là có những trường hợp yêu cầu một loại bất biến. đây là một trong chúng. ) Tuy nhiên, cả danh sách và từ điển khác đều không thể đóng vai trò là khóa từ điển vì danh sách và từ điển có thể thay đổi >>> 5Lưu ý kỹ thuật. Tại sao thông báo lỗi nói "không thể xóa"? Về mặt kỹ thuật, không hoàn toàn đúng khi nói rằng một đối tượng phải là bất biến để được sử dụng làm khóa từ điển. Chính xác hơn, một đối tượng phải là , có nghĩa là nó có thể được chuyển đến một hàm băm. A lấy dữ liệu có kích thước tùy ý và ánh xạ nó tới một giá trị có kích thước cố định tương đối đơn giản hơn được gọi là giá trị băm (hoặc đơn giản là hàm băm), được sử dụng để tra cứu và so sánh bảng Hàm 22 tích hợp sẵn của Python trả về giá trị băm cho một đối tượng có thể băm và đưa ra một ngoại lệ cho một đối tượng không>>> 6Tất cả các loại bất biến tích hợp mà bạn đã học cho đến nay đều có thể băm được và các loại vùng chứa có thể thay đổi (danh sách và từ điển) thì không. Vì vậy, với các mục đích hiện tại, bạn có thể coi hashable và immutable ít nhiều đồng nghĩa với nhau Trong các hướng dẫn trong tương lai, bạn sẽ gặp các đối tượng có thể thay đổi cũng có thể băm được Loại bỏ các quảng cáoHạn chế về giá trị từ điểnNgược lại, không có hạn chế về giá trị từ điển. nghĩa đen là không có gì cả. Giá trị từ điển có thể là bất kỳ loại đối tượng nào mà Python hỗ trợ, bao gồm các loại có thể thay đổi như danh sách và từ điển cũng như các đối tượng do người dùng định nghĩa, mà bạn sẽ tìm hiểu về các hướng dẫn sắp tới Cũng không có hạn chế đối với một giá trị cụ thể xuất hiện nhiều lần trong từ điển >>> 7Toán tử và chức năng tích hợpBạn đã trở nên quen thuộc với nhiều toán tử và hàm tích hợp có thể được sử dụng với chuỗi, và. Một số trong số này cũng hoạt động với từ điển Ví dụ: toán tử 23 và 24 trả về 25 hoặc 26 tùy theo việc toán hạng được chỉ định có xuất hiện dưới dạng khóa trong từ điển hay không>>> 8Bạn có thể sử dụng toán tử 23 cùng với đánh giá ngắn mạch để tránh gây ra lỗi khi cố gắng truy cập một khóa không có trong từ điển>>> 9Trường hợp thứ hai do đánh giá ngắn mạch nên biểu thức 28 không được đánh giá nên không xảy ra ngoại lệ 4Hàm 40 trả về số cặp khóa-giá trị trong từ điển>>> 0Phương pháp từ điển tích hợpNhư với chuỗi và danh sách, có một số phương thức tích hợp có thể được gọi trên từ điển. Trên thực tế, trong một số trường hợp, phương thức danh sách và từ điển có cùng tên. (Trong phần thảo luận về lập trình hướng đối tượng, bạn sẽ thấy rằng các kiểu khác nhau có các phương thức có cùng tên là hoàn toàn có thể chấp nhận được. ) Sau đây là tổng quan về các phương pháp áp dụng cho từ điển >>> MLB_team = dict( .. Colorado='Rockies', .. Boston='Red Sox', .. Minnesota='Twins', .. Milwaukee='Brewers', .. Seattle='Mariners' .. ) 41
41 làm trống từ điển 43 của tất cả các cặp khóa-giá trị>>> 1Loại bỏ các quảng cáo>>> MLB_team = dict( .. Colorado='Rockies', .. Boston='Red Sox', .. Minnesota='Twins', .. Milwaukee='Brewers', .. Seattle='Mariners' .. ) 44
Phương thức 45 của từ điển Python cung cấp một cách thuận tiện để lấy giá trị của khóa từ từ điển mà không cần kiểm tra trước xem khóa có tồn tại hay không và không gây ra lỗi 46 tìm kiếm từ điển 43 cho 48 và trả về giá trị liên quan nếu tìm thấy. Nếu không tìm thấy 48, nó trả về 50>>> 2Nếu không tìm thấy 48 và đối số tùy chọn 52 được chỉ định, thì giá trị đó được trả về thay vì 50>>> 3>>> MLB_team = dict( .. Colorado='Rockies', .. Boston='Red Sox', .. Minnesota='Twins', .. Milwaukee='Brewers', .. Seattle='Mariners' .. ) 54
54 trả về một danh sách các bộ chứa các cặp khóa-giá trị trong 43. Mục đầu tiên trong mỗi bộ là khóa và mục thứ hai là giá trị của khóa>>> 4>>> MLB_team = dict( .. Colorado='Rockies', .. Boston='Red Sox', .. Minnesota='Twins', .. Milwaukee='Brewers', .. Seattle='Mariners' .. ) 57
57 trả về danh sách tất cả các khóa trong 43>>> 5>>> MLB_team = dict( .. Colorado='Rockies', .. Boston='Red Sox', .. Minnesota='Twins', .. Milwaukee='Brewers', .. Seattle='Mariners' .. ) 60
60 trả về danh sách tất cả các giá trị trong 43>>> 6Mọi giá trị trùng lặp trong 43 sẽ được trả về nhiều lần khi chúng xảy ra>>> 7Lưu ý kỹ thuật. Các phương thức 64, 65 và 66 thực sự trả về một thứ gọi là đối tượng xem. Một đối tượng xem từ điển ít nhiều giống như một cửa sổ trên các khóa và giá trị. Đối với các mục đích thực tế, bạn có thể coi các phương thức này là danh sách trả về các khóa và giá trị của từ điểnLoại bỏ các quảng cáo>>> MLB_team = dict( .. Colorado='Rockies', .. Boston='Red Sox', .. Minnesota='Twins', .. Milwaukee='Brewers', .. Seattle='Mariners' .. ) 67
Nếu 48 có mặt trong 43, thì 00 sẽ xóa 48 và trả về giá trị liên quan của nó>>> 8 00 tăng ngoại lệ 4 nếu 48 không có trong 43>>> 9Nếu 48 không có trong 43 và đối số tùy chọn 52 được chỉ định, thì giá trị đó được trả về và không có ngoại lệ nào được đưa ra>>> 0>>> MLB_team = { .. 'Colorado' : 'Rockies', .. 'Boston' : 'Red Sox', .. 'Minnesota': 'Twins', .. 'Milwaukee': 'Brewers', .. 'Seattle' : 'Mariners' .. } 09
09 xóa cặp khóa-giá trị cuối cùng được thêm vào từ 43 và trả về dưới dạng một bộ>>> 1Nếu 43 trống, 09 sẽ tăng ngoại lệ 4>>> 2Ghi chú. Trong các phiên bản Python nhỏ hơn 3. 6, 15 sẽ trả về một cặp khóa-giá trị tùy ý (ngẫu nhiên) vì từ điển Python không có thứ tự trước phiên bản 3. 6>>> MLB_team = { .. 'Colorado' : 'Rockies', .. 'Boston' : 'Red Sox', .. 'Minnesota': 'Twins', .. 'Milwaukee': 'Brewers', .. 'Seattle' : 'Mariners' .. } 16
Nếu 17 là một từ điển, thì 16 sẽ hợp nhất các mục từ 17 vào 43. Đối với mỗi khóa trong 17
Dưới đây là một ví dụ cho thấy hai từ điển được hợp nhất với nhau >>> 3Trong ví dụ này, khóa 28 đã tồn tại trong 29, vì vậy giá trị của nó được cập nhật thành 30, giá trị cho khóa đó từ 31. Tuy nhiên, không có khóa 32 trong 29, vì vậy cặp khóa-giá trị đó được thêm vào từ 31 17 cũng có thể là một chuỗi các cặp khóa-giá trị, tương tự như khi hàm 8 được sử dụng để xác định từ điển. Ví dụ: 17 có thể được chỉ định dưới dạng danh sách các bộ dữ liệu>>> 4Hoặc các giá trị để hợp nhất có thể được chỉ định dưới dạng danh sách các đối số từ khóa >>> 5Loại bỏ các quảng cáoPhần kết luậnTrong hướng dẫn này, bạn đã trình bày các thuộc tính cơ bản của từ điển Python và học cách truy cập và thao tác dữ liệu từ điển Danh sách và từ điển là hai trong số các loại Python được sử dụng thường xuyên nhất. Như bạn đã thấy, chúng có một số điểm tương đồng, nhưng khác nhau về cách các phần tử của chúng được truy cập. Các phần tử danh sách được truy cập theo chỉ mục số dựa trên thứ tự và các phần tử từ điển được truy cập bằng khóa Do sự khác biệt này, danh sách và từ điển có xu hướng phù hợp với các trường hợp khác nhau. Bây giờ bạn sẽ có một cảm giác tốt, nếu một trong hai, sẽ là tốt nhất cho một tình huống nhất định Tiếp theo bạn sẽ tìm hiểu về bộ Python. Tập hợp là một kiểu dữ liệu hỗn hợp khác, nhưng nó hoàn toàn khác với danh sách hoặc từ điển Lấy bài kiểm tra. Kiểm tra kiến thức của bạn với bài kiểm tra tương tác “Từ điển Python” của chúng tôi. Sau khi hoàn thành, bạn sẽ nhận được điểm số để có thể theo dõi quá trình học tập của mình theo thời gian Lấy bài kiểm tra " « Danh sách và bộ dữ liệu trong Python Bộ trong Python » Đánh dấu là đã hoàn thành Xem ngay Hướng dẫn này có một khóa học video liên quan do nhóm Real Python tạo. Xem nó cùng với hướng dẫn bằng văn bản để hiểu sâu hơn. Từ điển trong Python 🐍 Thủ thuật Python 💌 Nhận một Thủ thuật Python ngắn và hấp dẫn được gửi đến hộp thư đến của bạn vài ngày một lần. Không có thư rác bao giờ. Hủy đăng ký bất cứ lúc nào. Được quản lý bởi nhóm Real Python Gửi cho tôi thủ thuật Python » Giới thiệu về John Sturtz John là một Pythonista cuồng nhiệt và là thành viên của nhóm hướng dẫn Real Python » Thông tin thêm về JohnMỗi hướng dẫn tại Real Python được tạo bởi một nhóm các nhà phát triển để nó đáp ứng các tiêu chuẩn chất lượng cao của chúng tôi. Các thành viên trong nhóm đã làm việc trong hướng dẫn này là Aldren Joanna Bậc thầy Kỹ năng Python trong thế giới thực Với quyền truy cập không giới hạn vào Python thực Tham gia với chúng tôi và có quyền truy cập vào hàng nghìn hướng dẫn, khóa học video thực hành và cộng đồng các Pythonistas chuyên gia Nâng cao kỹ năng Python của bạn » Bậc thầy Kỹ năng Python trong thế giới thực Tham gia với chúng tôi và có quyền truy cập vào hàng ngàn hướng dẫn, khóa học video thực hành và cộng đồng Pythonistas chuyên gia Nâng cao kỹ năng Python của bạn » Bạn nghĩ sao? Đánh giá bài viết này Tweet Chia sẻ Chia sẻ EmailBài học số 1 hoặc điều yêu thích mà bạn đã học được là gì? Mẹo bình luận. Những nhận xét hữu ích nhất là những nhận xét được viết với mục đích học hỏi hoặc giúp đỡ các sinh viên khác. và nhận câu trả lời cho các câu hỏi phổ biến trong cổng thông tin hỗ trợ của chúng tôi Lợi thế chính của việc sử dụng từ điển trên danh sách trong Python là gì?Việc sử dụng từ điển để tra cứu các thành phần sẽ hiệu quả hơn vì việc tra cứu từ điển mất ít thời gian hơn so với danh sách . Ví dụ: hãy xem xét một tập dữ liệu có 5000000 phần tử trong mô hình học máy dựa trên tốc độ truy xuất dữ liệu.
Lợi thế chính của việc sử dụng từ điển trên danh sách là gì?Sử dụng từ điển để tra cứu các phần tử sẽ hiệu quả hơn vì nó nhanh hơn danh sách và mất ít thời gian hơn để duyệt . Hơn nữa, danh sách giữ thứ tự của các phần tử trong khi từ điển thì không. Vì vậy, nên sử dụng cấu trúc dữ liệu danh sách khi bạn quan tâm đến thứ tự của các phần tử dữ liệu.
Các tính năng chính của từ điển trong Python là gì?4 Tính năng cần biết của từ điển Python . Từ điển không có thứ tự. Một từ điển chứa các cặp khóa-giá trị nhưng không có thứ tự cho các cặp. . Các phím là duy nhất. Khóa từ điển phải là duy nhất. . Các khóa phải là bất biến. Khóa từ điển phải thuộc loại bất biến. . hiểu từ điển Từ điển có quan trọng trong Python không?Từ điển là cấu trúc dữ liệu quan trọng trong Python sử dụng các khóa để lập chỉ mục. Chúng là một chuỗi các mục không có thứ tự (cặp khóa-giá trị), có nghĩa là thứ tự không được bảo toàn. Các phím là bất biến. |