Danh sách từ điển có thứ tự Python

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ển

Phầ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

Bạn có thể sắp xếp danh sách từ điển Python không?

Trong Python, việc sắp xếp danh sách từ điển bằng phương thức sort[] hoặc hàm sorted[] sẽ gây ra lỗi TypeError theo mặc định. Bằng cách chỉ định tham số chính là sort[] hoặc sorted[] , bạn có thể sắp xếp danh sách từ điển theo giá trị của khóa cụ thể .

Từ điển được sắp xếp trong Python là gì?

OrderedDict là một lớp con từ điển ghi nhớ thứ tự mà nội dung của nó được thêm vào, hỗ trợ các phương thức dict thông thường . Nếu một mục mới ghi đè lên một mục hiện có, vị trí chèn ban đầu sẽ không thay đổi.

Là một từ điển một danh sách theo thứ tự?

Danh sách là tập hợp dữ liệu được sắp xếp theo thứ tự, trong khi đó từ điển lưu trữ dữ liệu dưới dạng các cặp khóa-giá trị bằng cách sử dụng cấu trúc bảng băm .

OrderedDict có bị phản đối không?

Không, nó sẽ không trở nên dư thừa trong Python 3. 7 vì OrderedDict không chỉ là lệnh giữ lại thứ tự chèn, nó còn cung cấp một phương thức phụ thuộc vào thứ tự, OrderedDict. move_to_end[] và hỗ trợ phép lặp Reverse[]*.

Chủ Đề