Như tất cả những gì chúng ta biết, từ điển là cấu trúc dữ liệu quan trọng nhất trong Python và ghi nhớ thứ tự mục của nó [theo bản cập nhật mới nhất của nó]. Từ điển Python lưu trữ các giá trị dữ liệu giống như bản đồ; . cặp giá trị. Khóa-giá trị được cung cấp trong từ điển để tối ưu hóa hơn
Vấn đề với từ điển tiêu chuẩn, nó không nhớ thứ tự chèn của cặp khóa-giá trị và do đó lặp qua các khóa dựa trên cách chúng được lưu trữ trong bảng băm
Python cung cấp loại OrderDict ghi nhớ thứ tự chèn của cặp [key, value] trong từ điển
Trong hướng dẫn này, chúng ta sẽ tìm hiểu sự khác biệt giữa từ điển thông thường và từ điển có thứ tự OrderDict. Chúng tôi sẽ tạo và sử dụng các đối tượng OrderedDict trong mã. Chúng tôi cũng sẽ xác định sự khác biệt giữa OrderedDict và dict
Bắt đầu với OrderedDict
Python OrderedDict là một lớp con dict lưu trữ thứ tự các cặp khóa-giá trị được chèn vào từ điển. Chúng tôi sẽ nhận được các mục theo thứ tự mà chúng đã được đưa vào. Nếu chúng tôi cập nhật giá trị của khóa hiện có, thứ tự sẽ không thay đổi. Nếu chúng tôi xóa một mục và chèn lại mục đó, mục đó sẽ được chèn vào cuối từ điển
Nó bao gồm tất cả các phương thức từ điển Python và có một số tính năng bổ sung. Hãy hiểu cách tạo một OrderedDict trong Python
Tạo đối tượng OrderDict
Để tạo OrderDict, chúng ta cần nhập lớp từ các bộ sưu tập. Có nhiều cách khác nhau để tạo OrderDict; . Hãy tạo dict theo thứ tự
đầu ra
OrderedDict[] OrderedDict[[['one', 1], ['two', 2], ['three', 3]]]
Trong đoạn mã trên, trước tiên, chúng tôi nhập OrderedDict từ các bộ sưu tập và tạo từ điển trống bằng cách khởi tạo OrderedDict mà không chuyển bất kỳ đối số nào
Chúng ta có thể chuyển cặp khóa-giá trị vào từ điển bằng cách cung cấp khóa trong dấu ngoặc vuông [[]]. Chúng tôi nhận được các mục theo cùng thứ tự chúng được đưa vào từ điển. Hãy hiểu ví dụ sau
Thí dụ -
đầu ra
OrderedDict[[['one', 1], ['two', 2], ['three', 3]]] OrderedDict[[['a', 1], ['c', 3], ['b', 2]]]
Trong đoạn mã trên, chúng tôi đã chuyển danh sách và đặt nó trong hàm tạo OrderedDict[]. Đối với danh sách hoặc bộ, từ điển được sắp xếp kết quả khớp với thứ tự ban đầu của các mục trong chuỗi đầu vào. Tuy nhiên, thứ tự cuối cùng của các mục không được biết với tập hợp cho đến khi OrdereDict được tạo
Chúng ta có thể tạo một từ điển có thứ tự bằng cách chuyển các đối số từ khóa cho hàm tạo của lớp
Thí dụ -
đầu ra
OrderedDict[[['one', 1], ['two', 2], ['three', 3]]]
OrderedDict cung cấp fromkeys[], tạo từ điển mới từ một lần lặp của các khóa và đặt tất cả giá trị của nó thành một giá trị chung
đầu ra
OrderedDict[[['one', 0], ['two', 0], ['three', 0]]]
Trong trường hợp này, chúng tôi tạo một từ điển có thứ tự bằng cách sử dụng danh sách các khóa làm điểm bắt đầu. Các đối số thứ hai để. fromkeys[] cung cấp một giá trị duy nhất cho tất cả các mục trong từ điển
Quản lý mục trong OrderedDict
Chúng tôi có thể thực hiện các hoạt động đột biến trong OrdereDict; . Chúng tôi có thể chèn các mục mới, cập nhật và xóa các mục hiện có, v.v. Nếu mục mới thêm được chèn vào từ điển đã đặt hàng hiện có, mục đó sẽ được thêm vào cuối từ điển
Hãy hiểu ví dụ sau -
Thí dụ -
đầu ra
OrderedDict[[['one', 1], ['two', 2], ['three', 3], ['four', 4]]]
Mục mới được thêm vào, ['bốn', 4] được đặt ở cuối từ điển cơ bản. Chúng ta có thể thấy rằng thứ tự của các mục hiện có không thay đổi
Khi chúng tôi xóa bất kỳ khóa nào và chèn một phiên bản mới của cùng một mục, mục mới sẽ được thêm vào cuối từ điển cơ bản. Hãy xem ví dụ sau
Thí dụ -
đầu ra
OrderedDict[[['one', 1], ['three', 3]]] OrderedDict[[['one', 1], ['three', 3], ['two', 2]]]
Khi chúng tôi cập nhật giá trị hiện có, khóa vẫn giữ nguyên nhưng được gán giá trị mới tại chỗ
Lặp lại một OrderedDict
Chúng ta có thể lặp lại OrdereDict giống như từ điển thông thường. Chúng tôi có thể lặp lại trực tiếp các khóa hoặc chúng tôi có thể sử dụng các phương thức tích hợp sẵn, chẳng hạn như. item[], keys[], và values[]
Thí dụ -
đầu ra
one -> 1 two -> 2 three -> 3 four -> 4 one -> 1 two -> 2 three -> 3 four -> 4 one -> 1 two -> 2 three -> 3 four -> 4 1 2 3 4
Giải trình -
Trong đoạn mã trên, chúng tôi đã trực tiếp lặp lại các khóa và sử dụng các phương thức từ điển để lặp lại num OrderedDict
Sự khác biệt giữa OrderedDict và Dictionary
Trong phiên bản trước của Python, Từ điển được định nghĩa là cấu trúc dữ liệu không có thứ tự. Nếu nhà phát triển Python yêu cầu sắp xếp dữ liệu, họ sẽ hướng tới danh sách và các cấu trúc dữ liệu khác để giữ cho dữ liệu của họ theo thứ tự. Bằng cách vượt qua thời gian, các nhà phát triển đã tìm thấy từ điển để giữ cho mục của nó được đặt hàng
Vào năm 2008, PEP 372 đã giới thiệu ý tưởng thêm một lớp bộ sưu tập có thể nhớ thứ tự của các mục được xác định theo thứ tự các khóa được chèn
Khi Python phát hành phiên bản 3. 6, nó đã sửa đổi việc triển khai từ điển chuẩn. Việc triển khai mới của nó đi kèm với các tính năng mở rộng như sử dụng ít bộ nhớ hơn và hiệu quả lặp lại cũng như tính năng không mong muốn. đối tượng dict giờ đây có thể giữ các mục của chúng theo thứ tự mà chúng được giới thiệu
Hãy hiểu sự khác biệt cơ bản giữa từ điển thông thường và OrderedDict
Ví dụ - Khởi tạo từ điển
đầu ra
Regular dictionary: b 98 c 99 d 100 e 101 f 102 g 103 OrderedDict: a 97 b 98 c 99 d 100 e 101 f 102
Xóa và cập nhật
Hãy hiểu cách xóa và cập nhật hoặc chèn lại bởi cả OrderedDict và từ điển
Thí dụ -
đầu ra
________số 8
So sánh giữa OrderDict và Dictionary
So sánh dưới đây sẽ giúp chọn ra những điểm khác biệt và tính năng phù hợp hơn. Hãy cùng tìm hiểu so sánh dưới đây
Thí dụ -
Sr. Đặt hàngDictDict1. Nó duy trì thứ tự chèn khóa kể từ Python 3. 1 phiên bản. Nó duy trì thứ tự chèn khóa kể từ Python 3. 6 phiên bản. 2. Nó cung cấp khả năng đọc cao và báo hiệu ý định liên quan đến thứ tự của các mục. Nó cung cấp khả năng đọc thấp và báo hiệu ý định liên quan đến thứ tự của các mục. 3. Khả năng kiểm soát của nó đối với thứ tự các mặt hàng khá cao. Khả năng kiểm soát của nó đối với thứ tự các mặt hàng khá thấp. 4. Nó ngốn nhiều bộ nhớ hơn. Nó tiêu tốn ít bộ nhớ hơn OrderedDict. 5. Nó hỗ trợ phép lặp ngược kể từ Python 3. 5. Nó không hỗ trợ phép lặp ngược kể từ Python 3. 5. 6. Hiệu suất hoạt động của nó thấp. Hiệu suất hoạt động của nó cao. 7. Nó hỗ trợ hợp nhất [. ] và cập nhật [. =] toán tử từ điển. Nó không hỗ trợ hợp nhất [. ] và cập nhật [. =] toán tử từ điểnPhần kết luận
Hướng dẫn này bao gồm sự khác biệt giữa từ điển thông thường và OrderedDict và giới thiệu OrderedDict. Từ điển Python không thể nhớ thứ tự của khóa, vì vậy các nhà phát triển Python đã tạo ra OrderedDict, được thiết kế đặc biệt để sắp xếp các mục theo thứ tự
Nhưng Python 3. 6 đã giới thiệu tính năng mới mà đối tượng dict có thể nhớ thứ tự của các mục. Hướng dẫn này đã cung cấp cái nhìn sâu sắc chính xác về cả hai từ điển, điều này sẽ giúp bạn chọn từ điển phù hợp với yêu cầu của mình