Hướng dẫn python dictionary out of order - từ điển python không theo thứ tự

Tôi chỉ bắt đầu chơi xung quanh với Python (nền VBA). Tại sao từ điển này được tạo ra theo thứ tự? Không nên là A: 1, B: 2 ... vv.?

Show
class Card:
def county(self):
    c = 0
    l = 0
    groupL = {}  # groupL for Loop
    for n in range(0,13):
        c += 1
        l = chr(n+97)
        groupL.setdefault(l,c)
    return groupL

pick_card = Card()
group = pick_card.county()
print group

Đây là đầu ra:

{'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12}

Hoặc, nó chỉ được in ra khỏi trật tự?

Đôi khi bạn cần một từ điển Python ghi nhớ thứ tự của các mặt hàng của nó. Trước đây, bạn chỉ có một công cụ để giải quyết vấn đề cụ thể này: Python từ

>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
5. Nó có một lớp con từ điển được thiết kế đặc biệt để ghi nhớ thứ tự của các mặt hàng, được xác định bởi thứ tự chèn của các khóa.

Điều này đã thay đổi trong Python 3.6. Lớp

>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
6 tích hợp hiện cũng giữ các mục của nó được đặt hàng. Do đó, nhiều người trong cộng đồng Python bây giờ tự hỏi liệu
>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
5 có hữu ích không. Nhìn kỹ hơn
>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
5 sẽ phát hiện ra rằng lớp này vẫn cung cấp các tính năng có giá trị.

Trong hướng dẫn này, bạn sẽ học cách:

  • Tạo và sử dụng các đối tượng
    >>> from collections import OrderedDict
    
    >>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
    >>> numbers
    OrderedDict([('one', 1), ('two', 2), ('three', 3)])
    
    >>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
    >>> letters
    OrderedDict([('c', 3), ('a', 1), ('b', 2)])
    
    5 trong mã của bạn
    >>> from collections import OrderedDict
    
    >>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
    >>> numbers
    OrderedDict([('one', 1), ('two', 2), ('three', 3)])
    
    >>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
    >>> letters
    OrderedDict([('c', 3), ('a', 1), ('b', 2)])
    
    5 objects
    in your code
  • Xác định sự khác biệt giữa
    >>> from collections import OrderedDict
    
    >>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
    >>> numbers
    OrderedDict([('one', 1), ('two', 2), ('three', 3)])
    
    >>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
    >>> letters
    OrderedDict([('c', 3), ('a', 1), ('b', 2)])
    
    5 và
    >>> from collections import OrderedDict
    
    >>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
    >>> numbers
    OrderedDict([('one', 1), ('two', 2), ('three', 3)])
    
    >>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
    >>> letters
    OrderedDict([('c', 3), ('a', 1), ('b', 2)])
    
    6differences between
    >>> from collections import OrderedDict
    
    >>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
    >>> numbers
    OrderedDict([('one', 1), ('two', 2), ('three', 3)])
    
    >>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
    >>> letters
    OrderedDict([('c', 3), ('a', 1), ('b', 2)])
    
    5 and
    >>> from collections import OrderedDict
    
    >>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
    >>> numbers
    OrderedDict([('one', 1), ('two', 2), ('three', 3)])
    
    >>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
    >>> letters
    OrderedDict([('c', 3), ('a', 1), ('b', 2)])
    
    6
  • Hiểu những ưu và nhược điểm của việc sử dụng
    >>> from collections import OrderedDict
    
    >>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
    >>> numbers
    OrderedDict([('one', 1), ('two', 2), ('three', 3)])
    
    >>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
    >>> letters
    OrderedDict([('c', 3), ('a', 1), ('b', 2)])
    
    5 so với
    >>> from collections import OrderedDict
    
    >>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
    >>> numbers
    OrderedDict([('one', 1), ('two', 2), ('three', 3)])
    
    >>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
    >>> letters
    OrderedDict([('c', 3), ('a', 1), ('b', 2)])
    
    6pros and cons of using
    >>> from collections import OrderedDict
    
    >>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
    >>> numbers
    OrderedDict([('one', 1), ('two', 2), ('three', 3)])
    
    >>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
    >>> letters
    OrderedDict([('c', 3), ('a', 1), ('b', 2)])
    
    5 vs
    >>> from collections import OrderedDict
    
    >>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
    >>> numbers
    OrderedDict([('one', 1), ('two', 2), ('three', 3)])
    
    >>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
    >>> letters
    OrderedDict([('c', 3), ('a', 1), ('b', 2)])
    
    6

Với kiến ​​thức này, bạn có thể chọn lớp từ điển phù hợp nhất với nhu cầu của bạn khi bạn muốn bảo tồn thứ tự của các mặt hàng.

Đến cuối hướng dẫn, bạn sẽ thấy một ví dụ về việc thực hiện hàng đợi dựa trên từ điển bằng cách sử dụng

>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
5, sẽ khó khăn hơn nếu bạn sử dụng đối tượng
>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
6 thông thường.

Lựa chọn giữa >>> from collections import OrderedDict >>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)]) >>> numbers OrderedDict([('one', 1), ('two', 2), ('three', 3)]) >>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)}) >>> letters OrderedDict([('c', 3), ('a', 1), ('b', 2)]) 5 và >>> from collections import OrderedDict >>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)]) >>> numbers OrderedDict([('one', 1), ('two', 2), ('three', 3)]) >>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)}) >>> letters OrderedDict([('c', 3), ('a', 1), ('b', 2)]) 6

Trong nhiều năm, từ điển Python là cấu trúc dữ liệu không đặt hàng. Các nhà phát triển Python đã quen với thực tế này và họ dựa vào danh sách hoặc các chuỗi khác khi họ cần giữ dữ liệu của họ theo thứ tự. Theo thời gian, các nhà phát triển đã tìm thấy một loại từ điển mới, một loại sẽ giữ các mục của nó được đặt hàng.

Trở lại năm 2008, PEP 372 đã giới thiệu ý tưởng thêm một lớp từ điển mới vào

Python 3.9.0 (default, Oct  5 2020, 17:52:02)
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from collections import OrderedDict

>>> numbers = OrderedDict({"one": 1, "two": 2, "three": 3})
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])
8. Mục tiêu chính của nó là ghi nhớ thứ tự của các mặt hàng theo định nghĩa theo thứ tự các khóa được chèn. Đó là nguồn gốc của
>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
5.

Các nhà phát triển Core Python muốn điền vào khoảng trống và cung cấp một từ điển có thể bảo tồn thứ tự các khóa được chèn. Điều đó, đến lượt nó, cho phép thực hiện đơn giản hơn các thuật toán cụ thể dựa vào thuộc tính này.

>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
5 đã được thêm vào thư viện tiêu chuẩn trong Python 3.1. API của nó về cơ bản giống như
>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
6. Tuy nhiên,
>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
5 lặp lại trên các khóa và giá trị theo cùng thứ tự mà các khóa được chèn. Nếu một mục mới ghi đè lên một mục nhập hiện có, thì thứ tự không thay đổi. Nếu một mục bị xóa và xác định lại, thì nó sẽ được chuyển đến cuối từ điển.

Python 3.6 đã giới thiệu một triển khai mới của

>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
6. Việc triển khai mới này thể hiện một chiến thắng lớn về mặt sử dụng bộ nhớ và hiệu quả lặp lại. Ngoài ra, việc triển khai mới cung cấp một tính năng mới và có phần bất ngờ: các đối tượng
>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
6 hiện giữ các mục của chúng theo cùng thứ tự mà chúng được giới thiệu. Ban đầu, tính năng này được coi là một chi tiết triển khai và tài liệu được khuyên không nên dựa vào nó.

Theo lời của Raymond Hettinger, nhà phát triển Core Python và đồng tác giả của

>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
5, lớp được thiết kế đặc biệt để giữ cho các mặt hàng của nó được đặt hàng, trong khi việc triển khai
>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
6 mới được thiết kế để nhỏ gọn và cung cấp nhanh chóng:

Từ điển thông thường hiện tại dựa trên thiết kế mà tôi đã đề xuất vài năm trước. Các mục tiêu chính của thiết kế đó là sự nhỏ gọn và lặp lại nhanh hơn so với các mảng dày đặc của các phím và giá trị. Duy trì trật tự là một cổ vật hơn là một mục tiêu thiết kế. Thiết kế có thể duy trì trật tự nhưng đó không phải là chuyên môn của nó.

Ngược lại, tôi đã cho

Python 3.5.10 (default, Jan 25 2021, 13:22:52)
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from collections import OrderedDict

>>> numbers = OrderedDict({"one": 1, "two": 2, "three": 3})
>>> numbers
OrderedDict([('one', 1), ('three', 3), ('two', 2)])
7 một thiết kế khác (sau đó được mã hóa bằng C bởi Eric Snow). Mục tiêu chính là bảo trì trật tự hiệu quả ngay cả đối với khối lượng công việc nghiêm trọng như áp đặt bởi
Python 3.5.10 (default, Jan 25 2021, 13:22:52)
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from collections import OrderedDict

>>> numbers = OrderedDict({"one": 1, "two": 2, "three": 3})
>>> numbers
OrderedDict([('one', 1), ('three', 3), ('two', 2)])
8 thường xuyên thay đổi thứ tự mà không chạm vào
>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
6 cơ bản. Cố ý,
>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
5 có một thiết kế ưu tiên các khả năng đặt hàng với chi phí của chi phí bộ nhớ bổ sung và một yếu tố liên tục thời gian chèn tồi tệ hơn.

Vẫn là mục tiêu của tôi là

Python 3.5.10 (default, Jan 25 2021, 13:22:52)
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from collections import OrderedDict

>>> numbers = OrderedDict({"one": 1, "two": 2, "three": 3})
>>> numbers
OrderedDict([('one', 1), ('three', 3), ('two', 2)])
7 có một thiết kế khác với các đặc điểm hiệu suất khác với các dicts thông thường. Nó có một số phương pháp cụ thể theo thứ tự mà các dicts thường xuyên không có (chẳng hạn như
>>> from collections import OrderedDict

>>> numbers = OrderedDict(one=1, two=2, three=3)
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])
2 và
>>> from collections import OrderedDict

>>> numbers = OrderedDict(one=1, two=2, three=3)
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])
3 xuất hiện hiệu quả từ hai đầu).
>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
5 cần phải giỏi các hoạt động đó bởi vì đó là những gì khác biệt với các dicts thông thường. (Nguồn)

Trong Python 3.7, tính năng được đặt hàng của các vật phẩm của các đối tượng

>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
6 đã được tuyên bố là một phần chính thức của đặc tả ngôn ngữ Python. Vì vậy, từ thời điểm đó, các nhà phát triển có thể dựa vào
>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
6 khi họ cần một từ điển giữ cho các mặt hàng của nó được đặt hàng.

Tại thời điểm này, một câu hỏi đặt ra:

>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
5 vẫn cần thiết sau khi triển khai
>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
6 mới này? Câu trả lời phụ thuộc vào trường hợp sử dụng cụ thể của bạn và cả về mức độ rõ ràng bạn muốn có trong mã của mình.

Tại thời điểm viết bài, một số tính năng của

>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
5 vẫn làm cho nó có giá trị và khác với
>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
6 thông thường:

  1. Tín hiệu ý định: Nếu bạn sử dụng
    >>> from collections import OrderedDict
    
    >>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
    >>> numbers
    OrderedDict([('one', 1), ('two', 2), ('three', 3)])
    
    >>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
    >>> letters
    OrderedDict([('c', 3), ('a', 1), ('b', 2)])
    
    5 trên
    >>> from collections import OrderedDict
    
    >>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
    >>> numbers
    OrderedDict([('one', 1), ('two', 2), ('three', 3)])
    
    >>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
    >>> letters
    OrderedDict([('c', 3), ('a', 1), ('b', 2)])
    
    6, thì mã của bạn cho thấy rõ rằng thứ tự các mục trong từ điển là quan trọng. Bạn có thể giao tiếp rõ ràng rằng mã của bạn cần hoặc dựa vào thứ tự các mục trong từ điển cơ bản.
    If you use
    >>> from collections import OrderedDict
    
    >>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
    >>> numbers
    OrderedDict([('one', 1), ('two', 2), ('three', 3)])
    
    >>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
    >>> letters
    OrderedDict([('c', 3), ('a', 1), ('b', 2)])
    
    5 over
    >>> from collections import OrderedDict
    
    >>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
    >>> numbers
    OrderedDict([('one', 1), ('two', 2), ('three', 3)])
    
    >>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
    >>> letters
    OrderedDict([('c', 3), ('a', 1), ('b', 2)])
    
    6, then your code makes it clear that the order of items in the dictionary is important. You’re clearly communicating that your code needs or relies on the order of items in the underlying dictionary.
  2. Kiểm soát thứ tự của các mục: Nếu bạn cần sắp xếp lại hoặc sắp xếp lại các mục trong từ điển, thì bạn có thể sử dụng
    >>> from collections import OrderedDict
    
    >>> keys = ["one", "two", "three"]
    >>> OrderedDict.fromkeys(keys, 0)
    OrderedDict([('one', 0), ('two', 0), ('three', 0)])
    
    3 và cũng là biến thể nâng cao của
    >>> from collections import OrderedDict
    
    >>> keys = ["one", "two", "three"]
    >>> OrderedDict.fromkeys(keys, 0)
    OrderedDict([('one', 0), ('two', 0), ('three', 0)])
    
    4.
    If you need to rearrange or reorder the items in a dictionary, then you can use
    >>> from collections import OrderedDict
    
    >>> keys = ["one", "two", "three"]
    >>> OrderedDict.fromkeys(keys, 0)
    OrderedDict([('one', 0), ('two', 0), ('three', 0)])
    
    3 and also the enhanced variation of
    >>> from collections import OrderedDict
    
    >>> keys = ["one", "two", "three"]
    >>> OrderedDict.fromkeys(keys, 0)
    OrderedDict([('one', 0), ('two', 0), ('three', 0)])
    
    4.
  3. Hành vi kiểm tra bình đẳng: Nếu mã của bạn so sánh từ điển cho sự bình đẳng và thứ tự của các mục rất quan trọng trong so sánh đó, thì
    >>> from collections import OrderedDict
    
    >>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
    >>> numbers
    OrderedDict([('one', 1), ('two', 2), ('three', 3)])
    
    >>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
    >>> letters
    OrderedDict([('c', 3), ('a', 1), ('b', 2)])
    
    5 là lựa chọn đúng đắn.
    If your code compares dictionaries for equality, and the order of items is important in that comparison, then
    >>> from collections import OrderedDict
    
    >>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
    >>> numbers
    OrderedDict([('one', 1), ('two', 2), ('three', 3)])
    
    >>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
    >>> letters
    OrderedDict([('c', 3), ('a', 1), ('b', 2)])
    
    5 is the right choice.

Có ít nhất một lý do nữa để tiếp tục sử dụng

>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
5 trong mã của bạn: khả năng tương thích ngược. Dựa vào các đối tượng
>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
6 thông thường để bảo tồn thứ tự các mục sẽ phá vỡ mã của bạn trong các môi trường chạy các phiên bản của Python cũ hơn 3,6.backward compatibility. Relying on regular
>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
6 objects to preserve the order of items will break your code in environments that run versions of Python older than 3.6.

Thật khó để nói nếu

>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
6 sẽ sớm thay thế
>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
5. Ngày nay,
>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
5 vẫn cung cấp các tính năng thú vị và có giá trị mà bạn có thể muốn xem xét khi chọn một công cụ cho một công việc nhất định.

Bắt đầu với Python từ >>> from collections import OrderedDict >>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)]) >>> numbers OrderedDict([('one', 1), ('two', 2), ('three', 3)]) >>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)}) >>> letters OrderedDict([('c', 3), ('a', 1), ('b', 2)]) 5

Python sườn

>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
5 là một lớp con
>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
6 bảo tồn thứ tự trong đó các cặp giá trị khóa, thường được gọi là các mục, được đưa vào từ điển. Khi bạn lặp lại một đối tượng
>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
5, các mục được đi qua theo thứ tự ban đầu. Nếu bạn cập nhật giá trị của một khóa hiện có, thì thứ tự vẫn không thay đổi. Nếu bạn loại bỏ một mục và sắp xếp lại nó, thì mục sẽ được thêm vào cuối từ điển.key-value pairs, commonly known as items, are inserted into the dictionary. When you iterate over an
>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
5 object, items are traversed in the original order. If you update the value of an existing key, then the order remains unchanged. If you remove an item and reinsert it, then the item is added at the end of the dictionary.

Là một lớp con

>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
6 có nghĩa là nó kế thừa tất cả các phương pháp mà một từ điển thông thường cung cấp.
>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
5 cũng có các tính năng bổ sung mà bạn sẽ tìm hiểu trong hướng dẫn này. Tuy nhiên, trong phần này, bạn sẽ học được những điều cơ bản về việc tạo và sử dụng các đối tượng
>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
5 trong mã của bạn.

Tạo đối tượng >>> from collections import OrderedDict >>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)]) >>> numbers OrderedDict([('one', 1), ('two', 2), ('three', 3)]) >>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)}) >>> letters OrderedDict([('c', 3), ('a', 1), ('b', 2)]) 5

Không giống như

>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
6,
>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
5 không phải là loại tích hợp, vì vậy bước đầu tiên để tạo các đối tượng
>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
5 là nhập lớp từ
Python 3.9.0 (default, Oct  5 2020, 17:52:02)
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from collections import OrderedDict

>>> numbers = OrderedDict({"one": 1, "two": 2, "three": 3})
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])
8. Có một số cách để tạo từ điển theo thứ tự. Hầu hết chúng đều giống hệt với cách bạn tạo một đối tượng
>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
6 thông thường. Ví dụ: bạn có thể tạo một đối tượng
>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
5 trống bằng cách khởi tạo lớp mà không có đối số:

>>>

>>> from collections import OrderedDict

>>> numbers = OrderedDict()

>>> numbers["one"] = 1
>>> numbers["two"] = 2
>>> numbers["three"] = 3

>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

Trong trường hợp này, trước tiên bạn nhập

>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
5 từ
Python 3.9.0 (default, Oct  5 2020, 17:52:02)
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from collections import OrderedDict

>>> numbers = OrderedDict({"one": 1, "two": 2, "three": 3})
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])
8. Sau đó, bạn tạo một từ điển được đặt hàng trống bằng cách khởi tạo
>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
5 mà không cung cấp các đối số cho hàm tạo.

Bạn có thể thêm các cặp giá trị khóa vào từ điển bằng cách cung cấp một khóa trong ngoặc vuông (

>>> from collections import OrderedDict
>>> numbers = OrderedDict(one=1, two=2, three=3)

>>> del numbers["one"]
>>> numbers
OrderedDict([('two', 2), ('three', 3)])

>>> numbers["one"] = 1
>>> numbers
OrderedDict([('two', 2), ('three', 3), ('one', 1)])
8) và gán giá trị cho khóa đó. Khi bạn tham khảo
>>> from collections import OrderedDict
>>> numbers = OrderedDict(one=1, two=2, three=3)

>>> del numbers["one"]
>>> numbers
OrderedDict([('two', 2), ('three', 3)])

>>> numbers["one"] = 1
>>> numbers
OrderedDict([('two', 2), ('three', 3), ('one', 1)])
9, bạn sẽ nhận được một cặp có giá trị khóa giữ các mục theo cùng một thứ tự, chúng được đưa vào từ điển.

Bạn cũng có thể chuyển một mục tiêu của các mục dưới dạng đối số cho hàm tạo của

>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
5:

>>>

>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])

Trong trường hợp này, trước tiên bạn nhập

>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
5 từ
Python 3.9.0 (default, Oct  5 2020, 17:52:02)
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from collections import OrderedDict

>>> numbers = OrderedDict({"one": 1, "two": 2, "three": 3})
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])
8. Sau đó, bạn tạo một từ điển được đặt hàng trống bằng cách khởi tạo
>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
5 mà không cung cấp các đối số cho hàm tạo.

Bạn có thể thêm các cặp giá trị khóa vào từ điển bằng cách cung cấp một khóa trong ngoặc vuông (

>>> from collections import OrderedDict
>>> numbers = OrderedDict(one=1, two=2, three=3)

>>> del numbers["one"]
>>> numbers
OrderedDict([('two', 2), ('three', 3)])

>>> numbers["one"] = 1
>>> numbers
OrderedDict([('two', 2), ('three', 3), ('one', 1)])
8) và gán giá trị cho khóa đó. Khi bạn tham khảo
>>> from collections import OrderedDict
>>> numbers = OrderedDict(one=1, two=2, three=3)

>>> del numbers["one"]
>>> numbers
OrderedDict([('two', 2), ('three', 3)])

>>> numbers["one"] = 1
>>> numbers
OrderedDict([('two', 2), ('three', 3), ('one', 1)])
9, bạn sẽ nhận được một cặp có giá trị khóa giữ các mục theo cùng một thứ tự, chúng được đưa vào từ điển.

>>>

Python 3.9.0 (default, Oct  5 2020, 17:52:02)
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from collections import OrderedDict

>>> numbers = OrderedDict({"one": 1, "two": 2, "three": 3})
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

Trong trường hợp này, trước tiên bạn nhập

>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
5 từ
Python 3.9.0 (default, Oct  5 2020, 17:52:02)
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from collections import OrderedDict

>>> numbers = OrderedDict({"one": 1, "two": 2, "three": 3})
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])
8. Sau đó, bạn tạo một từ điển được đặt hàng trống bằng cách khởi tạo
>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
5 mà không cung cấp các đối số cho hàm tạo.

>>>

Python 3.5.10 (default, Jan 25 2021, 13:22:52)
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from collections import OrderedDict

>>> numbers = OrderedDict({"one": 1, "two": 2, "three": 3})
>>> numbers
OrderedDict([('one', 1), ('three', 3), ('two', 2)])

Trong trường hợp này, trước tiên bạn nhập

>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
5 từ
Python 3.9.0 (default, Oct  5 2020, 17:52:02)
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from collections import OrderedDict

>>> numbers = OrderedDict({"one": 1, "two": 2, "three": 3})
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])
8. Sau đó, bạn tạo một từ điển được đặt hàng trống bằng cách khởi tạo
>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
5 mà không cung cấp các đối số cho hàm tạo.

Bạn có thể thêm các cặp giá trị khóa vào từ điển bằng cách cung cấp một khóa trong ngoặc vuông (

>>> from collections import OrderedDict
>>> numbers = OrderedDict(one=1, two=2, three=3)

>>> del numbers["one"]
>>> numbers
OrderedDict([('two', 2), ('three', 3)])

>>> numbers["one"] = 1
>>> numbers
OrderedDict([('two', 2), ('three', 3), ('one', 1)])
8) và gán giá trị cho khóa đó. Khi bạn tham khảo
>>> from collections import OrderedDict
>>> numbers = OrderedDict(one=1, two=2, three=3)

>>> del numbers["one"]
>>> numbers
OrderedDict([('two', 2), ('three', 3)])

>>> numbers["one"] = 1
>>> numbers
OrderedDict([('two', 2), ('three', 3), ('one', 1)])
9, bạn sẽ nhận được một cặp có giá trị khóa giữ các mục theo cùng một thứ tự, chúng được đưa vào từ điển.

>>>

>>> from collections import OrderedDict

>>> numbers = OrderedDict(one=1, two=2, three=3)
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

Trong trường hợp này, trước tiên bạn nhập

>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
5 từ
Python 3.9.0 (default, Oct  5 2020, 17:52:02)
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from collections import OrderedDict

>>> numbers = OrderedDict({"one": 1, "two": 2, "three": 3})
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])
8. Sau đó, bạn tạo một từ điển được đặt hàng trống bằng cách khởi tạo
>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
5 mà không cung cấp các đối số cho hàm tạo.

Bạn có thể thêm các cặp giá trị khóa vào từ điển bằng cách cung cấp một khóa trong ngoặc vuông (

>>> from collections import OrderedDict
>>> numbers = OrderedDict(one=1, two=2, three=3)

>>> del numbers["one"]
>>> numbers
OrderedDict([('two', 2), ('three', 3)])

>>> numbers["one"] = 1
>>> numbers
OrderedDict([('two', 2), ('three', 3), ('one', 1)])
8) và gán giá trị cho khóa đó. Khi bạn tham khảo
>>> from collections import OrderedDict
>>> numbers = OrderedDict(one=1, two=2, three=3)

>>> del numbers["one"]
>>> numbers
OrderedDict([('two', 2), ('three', 3)])

>>> numbers["one"] = 1
>>> numbers
OrderedDict([('two', 2), ('three', 3), ('one', 1)])
9, bạn sẽ nhận được một cặp có giá trị khóa giữ các mục theo cùng một thứ tự, chúng được đưa vào từ điển.

>>>

>>> from collections import OrderedDict

>>> keys = ["one", "two", "three"]
>>> OrderedDict.fromkeys(keys, 0)
OrderedDict([('one', 0), ('two', 0), ('three', 0)])

Trong trường hợp này, trước tiên bạn nhập

>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
5 từ
Python 3.9.0 (default, Oct  5 2020, 17:52:02)
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from collections import OrderedDict

>>> numbers = OrderedDict({"one": 1, "two": 2, "three": 3})
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])
8. Sau đó, bạn tạo một từ điển được đặt hàng trống bằng cách khởi tạo
>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
5 mà không cung cấp các đối số cho hàm tạo.

Bạn có thể thêm các cặp giá trị khóa vào từ điển bằng cách cung cấp một khóa trong ngoặc vuông (>>> from collections import OrderedDict >>> numbers = OrderedDict(one=1, two=2, three=3) >>> del numbers["one"] >>> numbers OrderedDict([('two', 2), ('three', 3)]) >>> numbers["one"] = 1 >>> numbers OrderedDict([('two', 2), ('three', 3), ('one', 1)]) 8) và gán giá trị cho khóa đó. Khi bạn tham khảo >>> from collections import OrderedDict >>> numbers = OrderedDict(one=1, two=2, three=3) >>> del numbers["one"] >>> numbers OrderedDict([('two', 2), ('three', 3)]) >>> numbers["one"] = 1 >>> numbers OrderedDict([('two', 2), ('three', 3), ('one', 1)]) 9, bạn sẽ nhận được một cặp có giá trị khóa giữ các mục theo cùng một thứ tự, chúng được đưa vào từ điển.

Bạn cũng có thể chuyển một mục tiêu của các mục dưới dạng đối số cho hàm tạo của

>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
5:mutating operations on its instances. You can insert new items, update and remove existing items, and so on. If you insert a new item into an existing ordered dictionary, then the item is added to the end of the dictionary:

>>>

>>> from collections import OrderedDict

>>> numbers = OrderedDict(one=1, two=2, three=3)
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> numbers["four"] = 4
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3), ('four', 4)])

Trong trường hợp này, trước tiên bạn nhập

>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
5 từ
Python 3.9.0 (default, Oct  5 2020, 17:52:02)
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from collections import OrderedDict

>>> numbers = OrderedDict({"one": 1, "two": 2, "three": 3})
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])
8. Sau đó, bạn tạo một từ điển được đặt hàng trống bằng cách khởi tạo
>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
5 mà không cung cấp các đối số cho hàm tạo.

Bạn có thể thêm các cặp giá trị khóa vào từ điển bằng cách cung cấp một khóa trong ngoặc vuông (

>>> from collections import OrderedDict
>>> numbers = OrderedDict(one=1, two=2, three=3)

>>> del numbers["one"]
>>> numbers
OrderedDict([('two', 2), ('three', 3)])

>>> numbers["one"] = 1
>>> numbers
OrderedDict([('two', 2), ('three', 3), ('one', 1)])
8) và gán giá trị cho khóa đó. Khi bạn tham khảo
>>> from collections import OrderedDict
>>> numbers = OrderedDict(one=1, two=2, three=3)

>>> del numbers["one"]
>>> numbers
OrderedDict([('two', 2), ('three', 3)])

>>> numbers["one"] = 1
>>> numbers
OrderedDict([('two', 2), ('three', 3), ('one', 1)])
9, bạn sẽ nhận được một cặp có giá trị khóa giữ các mục theo cùng một thứ tự, chúng được đưa vào từ điển.

>>>

>>> from collections import OrderedDict
>>> numbers = OrderedDict(one=1, two=2, three=3)

>>> del numbers["one"]
>>> numbers
OrderedDict([('two', 2), ('three', 3)])

>>> numbers["one"] = 1
>>> numbers
OrderedDict([('two', 2), ('three', 3), ('one', 1)])

Trong trường hợp này, trước tiên bạn nhập

>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
5 từ
Python 3.9.0 (default, Oct  5 2020, 17:52:02)
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from collections import OrderedDict

>>> numbers = OrderedDict({"one": 1, "two": 2, "three": 3})
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])
8. Sau đó, bạn tạo một từ điển được đặt hàng trống bằng cách khởi tạo
>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
5 mà không cung cấp các đối số cho hàm tạo.

Bạn có thể thêm các cặp giá trị khóa vào từ điển bằng cách cung cấp một khóa trong ngoặc vuông (

>>> from collections import OrderedDict
>>> numbers = OrderedDict(one=1, two=2, three=3)

>>> del numbers["one"]
>>> numbers
OrderedDict([('two', 2), ('three', 3)])

>>> numbers["one"] = 1
>>> numbers
OrderedDict([('two', 2), ('three', 3), ('one', 1)])
8) và gán giá trị cho khóa đó. Khi bạn tham khảo
>>> from collections import OrderedDict
>>> numbers = OrderedDict(one=1, two=2, three=3)

>>> del numbers["one"]
>>> numbers
OrderedDict([('two', 2), ('three', 3)])

>>> numbers["one"] = 1
>>> numbers
OrderedDict([('two', 2), ('three', 3), ('one', 1)])
9, bạn sẽ nhận được một cặp có giá trị khóa giữ các mục theo cùng một thứ tự, chúng được đưa vào từ điển.

>>>

{'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12}
0

Trong trường hợp này, trước tiên bạn nhập

>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
5 từ
Python 3.9.0 (default, Oct  5 2020, 17:52:02)
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from collections import OrderedDict

>>> numbers = OrderedDict({"one": 1, "two": 2, "three": 3})
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])
8. Sau đó, bạn tạo một từ điển được đặt hàng trống bằng cách khởi tạo
>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
5 mà không cung cấp các đối số cho hàm tạo.

Lặp lại trên một >>> from collections import OrderedDict >>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)]) >>> numbers OrderedDict([('one', 1), ('two', 2), ('three', 3)]) >>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)}) >>> letters OrderedDict([('c', 3), ('a', 1), ('b', 2)]) 5

Giống như với từ điển thông thường, bạn có thể lặp lại thông qua một đối tượng

>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
5 bằng một số công cụ và kỹ thuật. Bạn có thể lặp lại trực tiếp các khóa hoặc bạn có thể sử dụng các phương thức từ điển, chẳng hạn như
{'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12}
19,
{'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12}
20 và
{'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12}
21:

>>>

{'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12}
1

Vòng lặp

{'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12}
22 đầu tiên lặp lại các khóa của
>>> from collections import OrderedDict
>>> numbers = OrderedDict(one=1, two=2, three=3)

>>> del numbers["one"]
>>> numbers
OrderedDict([('two', 2), ('three', 3)])

>>> numbers["one"] = 1
>>> numbers
OrderedDict([('two', 2), ('three', 3), ('one', 1)])
9 trực tiếp. Ba vòng khác sử dụng các phương thức từ điển để lặp lại các mục, khóa và giá trị của
>>> from collections import OrderedDict
>>> numbers = OrderedDict(one=1, two=2, three=3)

>>> del numbers["one"]
>>> numbers
OrderedDict([('two', 2), ('three', 3)])

>>> numbers["one"] = 1
>>> numbers
OrderedDict([('two', 2), ('three', 3), ('one', 1)])
9.

Lặp lại theo thứ tự đảo ngược với {'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12} 25

Một tính năng quan trọng khác mà

>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
5 đã cung cấp kể từ Python 3.5 là các vật phẩm, khóa và giá trị của nó hỗ trợ lặp lại bằng cách sử dụng
{'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12}
25. Tính năng này đã được thêm vào từ điển thông thường trong Python 3.8. Vì vậy, nếu mã của bạn sử dụng nó, thì khả năng tương thích ngược của bạn bị hạn chế hơn nhiều với từ điển bình thường.

Bạn có thể sử dụng

{'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12}
25 với các mục, khóa và giá trị của đối tượng
>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
5:

>>>

{'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12}
2

Vòng lặp

{'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12}
22 đầu tiên lặp lại các khóa của
>>> from collections import OrderedDict
>>> numbers = OrderedDict(one=1, two=2, three=3)

>>> del numbers["one"]
>>> numbers
OrderedDict([('two', 2), ('three', 3)])

>>> numbers["one"] = 1
>>> numbers
OrderedDict([('two', 2), ('three', 3), ('one', 1)])
9 trực tiếp. Ba vòng khác sử dụng các phương thức từ điển để lặp lại các mục, khóa và giá trị của
>>> from collections import OrderedDict
>>> numbers = OrderedDict(one=1, two=2, three=3)

>>> del numbers["one"]
>>> numbers
OrderedDict([('two', 2), ('three', 3)])

>>> numbers["one"] = 1
>>> numbers
OrderedDict([('two', 2), ('three', 3), ('one', 1)])
9.

Lặp lại theo thứ tự đảo ngược với

{'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12}
25

>>>

{'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12}
3

Vòng lặp

{'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12}
22 đầu tiên lặp lại các khóa của
>>> from collections import OrderedDict
>>> numbers = OrderedDict(one=1, two=2, three=3)

>>> del numbers["one"]
>>> numbers
OrderedDict([('two', 2), ('three', 3)])

>>> numbers["one"] = 1
>>> numbers
OrderedDict([('two', 2), ('three', 3), ('one', 1)])
9 trực tiếp. Ba vòng khác sử dụng các phương thức từ điển để lặp lại các mục, khóa và giá trị của
>>> from collections import OrderedDict
>>> numbers = OrderedDict(one=1, two=2, three=3)

>>> del numbers["one"]
>>> numbers
OrderedDict([('two', 2), ('three', 3)])

>>> numbers["one"] = 1
>>> numbers
OrderedDict([('two', 2), ('three', 3), ('one', 1)])
9.

Lặp lại theo thứ tự đảo ngược với {'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12} 25

Một tính năng quan trọng khác mà

>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
5 đã cung cấp kể từ Python 3.5 là các vật phẩm, khóa và giá trị của nó hỗ trợ lặp lại bằng cách sử dụng
{'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12}
25. Tính năng này đã được thêm vào từ điển thông thường trong Python 3.8. Vì vậy, nếu mã của bạn sử dụng nó, thì khả năng tương thích ngược của bạn bị hạn chế hơn nhiều với từ điển bình thường.

Bạn có thể sử dụng

{'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12}
25 với các mục, khóa và giá trị của đối tượng
>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
5:

  • Mỗi vòng lặp trong ví dụ này sử dụng

    {'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12}
    
    25 để lặp lại thông qua các yếu tố khác nhau của từ điển được đặt hàng theo thứ tự ngược lại.

  • Từ điển thường xuyên cũng hỗ trợ lặp lại. Tuy nhiên, nếu bạn cố gắng sử dụng

    {'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12}
    
    25 với đối tượng
    >>> from collections import OrderedDict
    
    >>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
    >>> numbers
    OrderedDict([('one', 1), ('two', 2), ('three', 3)])
    
    >>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
    >>> letters
    OrderedDict([('c', 3), ('a', 1), ('b', 2)])
    
    6 thông thường trong phiên bản Python thấp hơn 3,8, thì bạn sẽ nhận được
    {'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12}
    
    33:

Nếu bạn cần lặp lại các mục theo một từ điển theo thứ tự ngược lại, thì

>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
5 là một đồng minh tốt. Sử dụng một từ điển thông thường làm giảm đáng kể khả năng tương thích ngược của bạn vì lặp lại đảo ngược đã được thêm vào từ điển thông thường cho đến khi Python 3.8.

Khám phá các tính năng độc đáo của Python từ

>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
5

Kể từ Python 3.6, từ điển thông thường đã giữ các mặt hàng của họ theo cùng thứ tự mà chúng được đưa vào từ điển cơ bản. Điều này giới hạn tính hữu ích của >>> from collections import OrderedDict >>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)]) >>> numbers OrderedDict([('one', 1), ('two', 2), ('three', 3)]) >>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)}) >>> letters OrderedDict([('c', 3), ('a', 1), ('b', 2)]) 5, như bạn đã thấy cho đến nay. Tuy nhiên, >>> from collections import OrderedDict >>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)]) >>> numbers OrderedDict([('one', 1), ('two', 2), ('three', 3)]) >>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)}) >>> letters OrderedDict([('c', 3), ('a', 1), ('b', 2)]) 5 cung cấp một số tính năng độc đáo mà bạn có thể tìm thấy trong một đối tượng >>> from collections import OrderedDict >>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)]) >>> numbers OrderedDict([('one', 1), ('two', 2), ('three', 3)]) >>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)}) >>> letters OrderedDict([('c', 3), ('a', 1), ('b', 2)]) 6 thông thường.

Với một từ điển được đặt hàng, bạn có quyền truy cập vào các phương pháp bổ sung và nâng cao sau:

>>> from collections import OrderedDict

>>> keys = ["one", "two", "three"]
>>> OrderedDict.fromkeys(keys, 0)
OrderedDict([('one', 0), ('two', 0), ('three', 0)])
3 là một phương pháp mới được thêm vào Python 3.2 cho phép bạn di chuyển một mục hiện có đến cuối hoặc đến đầu từ điển.

  1. >>> from collections import OrderedDict
    
    >>> keys = ["one", "two", "three"]
    >>> OrderedDict.fromkeys(keys, 0)
    OrderedDict([('one', 0), ('two', 0), ('three', 0)])
    
    4 là một biến thể nâng cao của đối tác
    {'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12}
    
    41 cho phép bạn xóa và trả lại một mục từ đầu hoặc bắt đầu từ điển theo thứ tự được đặt hàng.
    holds the key that identifies the item you want to move. If
    {'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12}
    
    51 doesn’t exist, then you get a
    {'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12}
    
    53.

  2. >>> from collections import OrderedDict
    
    >>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
    >>> numbers
    OrderedDict([('one', 1), ('two', 2), ('three', 3)])
    
    >>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
    >>> letters
    OrderedDict([('c', 3), ('a', 1), ('b', 2)])
    
    5 và
    >>> from collections import OrderedDict
    
    >>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
    >>> numbers
    OrderedDict([('one', 1), ('two', 2), ('three', 3)])
    
    >>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
    >>> letters
    OrderedDict([('c', 3), ('a', 1), ('b', 2)])
    
    6 cũng hoạt động khác nhau khi họ thử nghiệm về sự bình đẳng. Cụ thể, khi bạn so sánh từ điển được đặt hàng, thứ tự của các mục có vấn đề. Đó không phải là trường hợp với từ điển thông thường.
    holds a Boolean value that defines to which end of the dictionary you want to move the item at hand. It defaults to
    {'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12}
    
    55, which means that the item will be moved to the end, or right side, of the dictionary.
    {'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12}
    
    56 means that the item will be moved to the front, or left side, of the ordered dictionary.

Cuối cùng, các trường hợp

>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
5 cung cấp một thuộc tính gọi là
{'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12}
45 mà bạn có thể tìm thấy trong một trường hợp từ điển thông thường. Thuộc tính này cho phép bạn thêm các thuộc tính có thể ghi tùy chỉnh vào một từ điển được đặt hàng hiện có.

>>>

{'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12}
4

Sắp xếp lại các mặt hàng với

>>> from collections import OrderedDict

>>> keys = ["one", "two", "three"]
>>> OrderedDict.fromkeys(keys, 0)
OrderedDict([('one', 0), ('two', 0), ('three', 0)])
3

Một trong những khác biệt đáng chú ý hơn giữa

>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
6 và
>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
5 là phương pháp sau có một phương pháp bổ sung gọi là
>>> from collections import OrderedDict

>>> keys = ["one", "two", "three"]
>>> OrderedDict.fromkeys(keys, 0)
OrderedDict([('one', 0), ('two', 0), ('three', 0)])
3. Phương pháp này cho phép bạn di chuyển các mục hiện có sang phần cuối hoặc bắt đầu từ điển cơ bản, do đó, nó là một công cụ tuyệt vời để sắp xếp lại từ điển.

>>>

{'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12}
5

Khi bạn sử dụng

>>> from collections import OrderedDict

>>> keys = ["one", "two", "three"]
>>> OrderedDict.fromkeys(keys, 0)
OrderedDict([('one', 0), ('two', 0), ('three', 0)])
3, bạn có thể cung cấp hai đối số:

>>>

{'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12}
6

{'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12}
51 giữ khóa xác định mục bạn muốn di chuyển. Nếu
{'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12}
51 không tồn tại, thì bạn sẽ nhận được
{'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12}
53.

{'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12}
54 giữ một giá trị boolean xác định kết thúc của từ điển bạn muốn di chuyển vật phẩm trong tay. Nó mặc định là
{'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12}
55, có nghĩa là vật phẩm sẽ được di chuyển đến cuối hoặc bên phải của từ điển.
{'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12}
56 có nghĩa là vật phẩm sẽ được di chuyển sang phía trước hoặc bên trái của từ điển được đặt hàng.

Sắp xếp từ điển sau theo các giá trị:

>>>

{'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12}
7

Là một gợi ý hữu ích để thực hiện một giải pháp, hãy xem xét sử dụng hàm

{'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12}
69.

Bạn có thể mở rộng khối bên dưới để xem một giải pháp khả thi.

Bạn có thể sử dụng hàm

{'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12}
69 để truy xuất giá trị của từng cặp giá trị khóa trong
{'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12}
67 và sử dụng hàm đó làm đối số
{'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12}
51 thành
{'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12}
73:

>>>

{'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12}
8

Là một gợi ý hữu ích để thực hiện một giải pháp, hãy xem xét sử dụng hàm

{'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12}
69.comparison key from each element of the input iterable,
{'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12}
78. Then you use
>>> from collections import OrderedDict

>>> keys = ["one", "two", "three"]
>>> OrderedDict.fromkeys(keys, 0)
OrderedDict([('one', 0), ('two', 0), ('three', 0)])
3 to sort
{'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12}
67.

Bạn có thể mở rộng khối bên dưới để xem một giải pháp khả thi.

Bạn có thể sử dụng hàm {'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12} 69 để truy xuất giá trị của từng cặp giá trị khóa trong {'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12} 67 và sử dụng hàm đó làm đối số {'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12} 51 thành {'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12} 73:

Trong mã này, bạn sử dụng hàm

{'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12}
69 trả về giá trị của từng cặp giá trị khóa trong
{'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12}
67. Cuộc gọi đến
{'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12}
73 sử dụng hàm
{'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12}
69 này để trích xuất một khóa so sánh từ mỗi phần tử của đầu vào có thể điều chỉnh được,
{'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12}
78. Sau đó, bạn sử dụng
>>> from collections import OrderedDict

>>> keys = ["one", "two", "three"]
>>> OrderedDict.fromkeys(keys, 0)
OrderedDict([('one', 0), ('two', 0), ('three', 0)])
3 để sắp xếp
{'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12}
67.

>>>

{'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12}
9

Là một gợi ý hữu ích để thực hiện một giải pháp, hãy xem xét sử dụng hàm

{'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12}
69.

Bạn có thể mở rộng khối bên dưới để xem một giải pháp khả thi.

>>>

>>> from collections import OrderedDict

>>> numbers = OrderedDict()

>>> numbers["one"] = 1
>>> numbers["two"] = 2
>>> numbers["three"] = 3

>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])
0

Bạn có thể sử dụng hàm

{'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12}
69 để truy xuất giá trị của từng cặp giá trị khóa trong
{'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12}
67 và sử dụng hàm đó làm đối số
{'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12}
51 thành
{'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12}
73:

Trong mã này, bạn sử dụng hàm {'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12} 69 trả về giá trị của từng cặp giá trị khóa trong {'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12} 67. Cuộc gọi đến {'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12} 73 sử dụng hàm {'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12} 69 này để trích xuất một khóa so sánh từ mỗi phần tử của đầu vào có thể điều chỉnh được, {'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12} 78. Sau đó, bạn sử dụng >>> from collections import OrderedDict >>> keys = ["one", "two", "three"] >>> OrderedDict.fromkeys(keys, 0) OrderedDict([('one', 0), ('two', 0), ('three', 0)]) 3 để sắp xếp {'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12} 67.

Tuyệt quá! Bây giờ bạn đã biết cách sắp xếp lại các từ điển được đặt hàng của bạn bằng cách sử dụng

>>> from collections import OrderedDict

>>> keys = ["one", "two", "three"]
>>> OrderedDict.fromkeys(keys, 0)
OrderedDict([('one', 0), ('two', 0), ('three', 0)])
3. Bạn đã sẵn sàng để chuyển sang phần tiếp theo.

>>>

>>> from collections import OrderedDict

>>> numbers = OrderedDict()

>>> numbers["one"] = 1
>>> numbers["two"] = 2
>>> numbers["three"] = 3

>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])
1

Loại bỏ các mặt hàng bằng

>>> from collections import OrderedDict

>>> keys = ["one", "two", "three"]
>>> OrderedDict.fromkeys(keys, 0)
OrderedDict([('one', 0), ('two', 0), ('three', 0)])
4

Một tính năng thú vị khác của

>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
5 là phiên bản nâng cao của
>>> from collections import OrderedDict

>>> keys = ["one", "two", "three"]
>>> OrderedDict.fromkeys(keys, 0)
OrderedDict([('one', 0), ('two', 0), ('three', 0)])
4. Theo mặc định,
>>> from collections import OrderedDict

>>> keys = ["one", "two", "three"]
>>> OrderedDict.fromkeys(keys, 0)
OrderedDict([('one', 0), ('two', 0), ('three', 0)])
4 xóa và trả về một mục theo thứ tự LIFO (lần cuối/lần đầu tiên). Nói cách khác, nó loại bỏ các mục từ đầu bên phải của từ điển đã đặt hàng:

>>>

>>> from collections import OrderedDict

>>> numbers = OrderedDict()

>>> numbers["one"] = 1
>>> numbers["two"] = 2
>>> numbers["three"] = 3

>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])
2

Tại đây, bạn loại bỏ tất cả các mục từ

>>> from collections import OrderedDict
>>> numbers = OrderedDict(one=1, two=2, three=3)

>>> del numbers["one"]
>>> numbers
OrderedDict([('two', 2), ('three', 3)])

>>> numbers["one"] = 1
>>> numbers
OrderedDict([('two', 2), ('three', 3), ('one', 1)])
9 bằng
>>> from collections import OrderedDict

>>> keys = ["one", "two", "three"]
>>> OrderedDict.fromkeys(keys, 0)
OrderedDict([('one', 0), ('two', 0), ('three', 0)])
4. Mỗi cuộc gọi đến phương thức này sẽ loại bỏ một mục từ cuối từ điển cơ bản. Nếu bạn gọi
>>> from collections import OrderedDict

>>> keys = ["one", "two", "three"]
>>> OrderedDict.fromkeys(keys, 0)
OrderedDict([('one', 0), ('two', 0), ('three', 0)])
4 trên một từ điển trống, thì bạn sẽ nhận được
{'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12}
53. Cho đến thời điểm này,
>>> from collections import OrderedDict

>>> keys = ["one", "two", "three"]
>>> OrderedDict.fromkeys(keys, 0)
OrderedDict([('one', 0), ('two', 0), ('three', 0)])
4 hành xử giống như trong từ điển thông thường.

Tuy nhiên, trong

>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
5,
>>> from collections import OrderedDict

>>> keys = ["one", "two", "three"]
>>> OrderedDict.fromkeys(keys, 0)
OrderedDict([('one', 0), ('two', 0), ('three', 0)])
4 cũng chấp nhận một đối số boolean gọi là
{'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12}
54, mặc định là
{'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12}
55. Nếu bạn đặt
{'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12}
54 thành
{'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12}
56, thì
>>> from collections import OrderedDict

>>> keys = ["one", "two", "three"]
>>> OrderedDict.fromkeys(keys, 0)
OrderedDict([('one', 0), ('two', 0), ('three', 0)])
4 sẽ xóa các mục theo thứ tự FIFO (đầu tiên/đầu tiên), điều đó có nghĩa là nó sẽ loại bỏ các mục từ đầu từ điển:

>>>

>>> from collections import OrderedDict

>>> numbers = OrderedDict()

>>> numbers["one"] = 1
>>> numbers["two"] = 2
>>> numbers["three"] = 3

>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])
3

Với

{'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12}
54 được đặt thành
{'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12}
55, bạn có thể sử dụng
>>> from collections import OrderedDict

>>> keys = ["one", "two", "three"]
>>> OrderedDict.fromkeys(keys, 0)
OrderedDict([('one', 0), ('two', 0), ('three', 0)])
4 để xóa và trả lại các mục từ đầu của một từ điển được đặt hàng. Trong ví dụ này, cuộc gọi cuối cùng đến
>>> from collections import OrderedDict

>>> keys = ["one", "two", "three"]
>>> OrderedDict.fromkeys(keys, 0)
OrderedDict([('one', 0), ('two', 0), ('three', 0)])
4 tăng
{'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12}
53 vì từ điển cơ bản đã trống.

Kiểm tra sự bình đẳng giữa các từ điển

Khi bạn kiểm tra hai đối tượng

>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
5 cho sự bình đẳng trong bối cảnh Boolean, thứ tự các mục đóng vai trò quan trọng. Ví dụ: nếu từ điển được đặt hàng của bạn chứa cùng một bộ mục, thì kết quả của bài kiểm tra phụ thuộc vào thứ tự của chúng:

>>>

>>> from collections import OrderedDict

>>> numbers = OrderedDict()

>>> numbers["one"] = 1
>>> numbers["two"] = 2
>>> numbers["three"] = 3

>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])
4

Trong ví dụ này,

>>> from collections import OrderedDict

>>> numbers = OrderedDict()

>>> numbers["one"] = 1
>>> numbers["two"] = 2
>>> numbers["three"] = 3

>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])
04 có sự khác biệt nhỏ theo thứ tự các mục của nó so với
>>> from collections import OrderedDict

>>> numbers = OrderedDict()

>>> numbers["one"] = 1
>>> numbers["two"] = 2
>>> numbers["three"] = 3

>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])
05 và
>>> from collections import OrderedDict

>>> numbers = OrderedDict()

>>> numbers["one"] = 1
>>> numbers["two"] = 2
>>> numbers["three"] = 3

>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])
06, do đó, thử nghiệm đầu tiên trả về
{'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12}
56. Trong thử nghiệm thứ hai,
>>> from collections import OrderedDict

>>> numbers = OrderedDict()

>>> numbers["one"] = 1
>>> numbers["two"] = 2
>>> numbers["three"] = 3

>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])
05 và
>>> from collections import OrderedDict

>>> numbers = OrderedDict()

>>> numbers["one"] = 1
>>> numbers["two"] = 2
>>> numbers["three"] = 3

>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])
06 có cùng một bộ các mục, theo cùng một thứ tự, vì vậy thử nghiệm trả về
{'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12}
55.

Nếu bạn thử ví dụ tương tự bằng cách sử dụng từ điển thông thường, thì bạn sẽ nhận được một kết quả khác:

Tại đây, khi bạn kiểm tra hai từ điển thông thường cho sự bình đẳng, bạn sẽ nhận được

{'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12}
55 nếu cả hai từ điển đều có cùng một bộ mục. Trong trường hợp này, thứ tự các mặt hàng không thay đổi kết quả cuối cùng.

>>>

>>> from collections import OrderedDict

>>> numbers = OrderedDict()

>>> numbers["one"] = 1
>>> numbers["two"] = 2
>>> numbers["three"] = 3

>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])
5

Cuối cùng, các bài kiểm tra bình đẳng giữa đối tượng

>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
5 và từ điển thông thường don don đưa thứ tự các mục vào tài khoản:dot notation or by using
>>> from collections import OrderedDict

>>> numbers = OrderedDict()

>>> numbers["one"] = 1
>>> numbers["two"] = 2
>>> numbers["three"] = 3

>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])
26.

Khi bạn so sánh các từ điển được đặt hàng với từ điển thông thường, thứ tự của các mặt hàng không quan trọng. Nếu cả hai từ điển đều có cùng một bộ mục, thì chúng đều so sánh như nhau, bất kể thứ tự của các mặt hàng của chúng.

>>>

>>> from collections import OrderedDict

>>> numbers = OrderedDict()

>>> numbers["one"] = 1
>>> numbers["two"] = 2
>>> numbers["three"] = 3

>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])
6

Nối thêm các thuộc tính mới vào một trường hợp từ điển

>>>

>>> from collections import OrderedDict

>>> numbers = OrderedDict()

>>> numbers["one"] = 1
>>> numbers["two"] = 2
>>> numbers["three"] = 3

>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])
7

Nếu bạn cố gắng tự động thêm các thuộc tính thể hiện tùy chỉnh vào từ điển thông thường, thì bạn sẽ nhận được một

>>> from collections import OrderedDict

>>> numbers = OrderedDict()

>>> numbers["one"] = 1
>>> numbers["two"] = 2
>>> numbers["three"] = 3

>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])
29 nói với bạn rằng từ điển cơ bản không có thuộc tính nào. Điều đó bởi vì từ điển thông thường don don có thuộc tính
{'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12}
45 để giữ các thuộc tính thể hiện mới.

Hợp nhất và cập nhật từ điển với các nhà khai thác

Python 3.9 đã thêm hai toán tử mới vào không gian từ điển. Bây giờ bạn có các toán tử từ điển hợp nhất (

>>> from collections import OrderedDict

>>> numbers = OrderedDict()

>>> numbers["one"] = 1
>>> numbers["two"] = 2
>>> numbers["three"] = 3

>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])
31) và cập nhật (
>>> from collections import OrderedDict

>>> numbers = OrderedDict()

>>> numbers["one"] = 1
>>> numbers["two"] = 2
>>> numbers["three"] = 3

>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])
32). Các nhà khai thác này cũng làm việc với các trường hợp
>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
5:merge (
>>> from collections import OrderedDict

>>> numbers = OrderedDict()

>>> numbers["one"] = 1
>>> numbers["two"] = 2
>>> numbers["three"] = 3

>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])
31) and update (
>>> from collections import OrderedDict

>>> numbers = OrderedDict()

>>> numbers["one"] = 1
>>> numbers["two"] = 2
>>> numbers["three"] = 3

>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])
32) dictionary operators. These operators also work with
>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
5 instances:

>>>

>>> from collections import OrderedDict

>>> numbers = OrderedDict()

>>> numbers["one"] = 1
>>> numbers["two"] = 2
>>> numbers["three"] = 3

>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])
8

Như tên của nó cho thấy, toán tử hợp nhất hợp nhất hai từ điển thành một từ mới chứa các mục của cả hai từ điển ban đầu. Nếu các từ điển trong biểu thức có các khóa chung, thì các giá trị từ điển ngoài cùng bên phải sẽ chiếm ưu thế.

Nhà điều hành cập nhật rất tiện dụng khi bạn có từ điển và muốn cập nhật một số giá trị của nó mà không cần gọi

{'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12}
16:

>>>

>>> from collections import OrderedDict

>>> numbers = OrderedDict()

>>> numbers["one"] = 1
>>> numbers["two"] = 2
>>> numbers["three"] = 3

>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])
9

Trong ví dụ này, bạn sử dụng toán tử cập nhật từ điển để cập nhật thông tin trọn đời của Newton. Nhà điều hành cập nhật một từ điển tại chỗ. Nếu từ điển cung cấp dữ liệu cập nhật có các khóa mới, thì các khóa đó được thêm vào cuối từ điển gốc.

Xem xét hiệu suất

Hiệu suất là một chủ đề quan trọng trong lập trình. Biết được thuật toán chạy nhanh như thế nào hoặc bao nhiêu bộ nhớ mà nó sử dụng là mối quan tâm phổ biến.

>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
5 ban đầu được mã hóa trong Python và sau đó được viết bằng C để tối đa hóa hiệu quả trong các phương pháp và hoạt động của nó. Hai triển khai này hiện có sẵn trong thư viện tiêu chuẩn. Tuy nhiên, việc triển khai Python đóng vai trò thay thế nếu việc triển khai C không có sẵn vì một số lý do.

Cả hai triển khai của

>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
5 liên quan đến việc sử dụng danh sách được liên kết gấp đôi để nắm bắt thứ tự của các mục. Mặc dù có thời gian tuyến tính cho một số hoạt động, việc triển khai danh sách được liên kết trong
>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
5 được tối ưu hóa cao để duy trì thời gian nhanh của các phương pháp từ điển tương ứng. Điều đó nói rằng, các hoạt động trên một từ điển được đặt hàng là O (1) nhưng với một yếu tố không đổi lớn hơn so với từ điển thông thường.

Nói chung,

>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
5 có hiệu suất thấp hơn từ điển thông thường. Ở đây, một ví dụ đo lường thời gian thực hiện của một số hoạt động trên cả hai lớp từ điển:

>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
0

Trong tập lệnh này, bạn tính toán

>>> from collections import OrderedDict

>>> numbers = OrderedDict()

>>> numbers["one"] = 1
>>> numbers["two"] = 2
>>> numbers["three"] = 3

>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])
39 mà cần để chạy một số hoạt động phổ biến trên một từ điển nhất định. Vòng lặp
{'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12}
22 sử dụng
>>> from collections import OrderedDict

>>> numbers = OrderedDict()

>>> numbers["one"] = 1
>>> numbers["two"] = 2
>>> numbers["three"] = 3

>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])
41 để đo thời gian thực hiện của tập hợp các hoạt động. Hàm trả về thời gian trung bình, tính bằng nano giây, cần phải chạy tập hợp các hoạt động đã chọn.

Nếu bạn chạy tập lệnh này từ dòng lệnh của mình, thì bạn sẽ nhận được một đầu ra tương tự như thế này:

>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
1

Như bạn thấy trong đầu ra, các hoạt động trên các đối tượng

>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
6 nhanh hơn các hoạt động trên các đối tượng
>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
5.

Về mức tiêu thụ bộ nhớ, các trường hợp

>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
5 phải trả chi phí lưu trữ vì danh sách các khóa được đặt hàng của họ. Ở đây, một kịch bản cung cấp cho bạn ý tưởng về chi phí bộ nhớ này:

>>>

>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
2

Trong ví dụ này, bạn sử dụng

>>> from collections import OrderedDict

>>> numbers = OrderedDict()

>>> numbers["one"] = 1
>>> numbers["two"] = 2
>>> numbers["three"] = 3

>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])
45 để đo dấu chân bộ nhớ trong byte của hai đối tượng từ điển. Trong đầu ra, bạn có thể thấy rằng từ điển thông thường chiếm ít bộ nhớ hơn so với đối tác
>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
5 của nó.

Chọn từ điển phù hợp cho công việc

Cho đến nay, bạn đã tìm hiểu về sự khác biệt tinh tế giữa

>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
5 và
>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
6. Bạn đã học được rằng, mặc dù từ điển thông thường đã được đặt hàng các cấu trúc dữ liệu kể từ Python 3.6, nhưng vẫn có một số giá trị trong việc sử dụng
>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
5 vì một tập hợp các tính năng hữu ích có mặt trong
>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
6.

Ở đây, một bản tóm tắt về sự khác biệt và tính năng có liên quan hơn của cả hai lớp mà bạn nên xem xét khi bạn quyết định sử dụng cái nào:

Tính năng
>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
5
>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
6
Lệnh chèn chính được duy trìCó (kể từ Python 3.1)Có (kể từ Python 3.6)
Khả năng đọc và tín hiệu ý định liên quan đến thứ tự của các mặt hàngCaoThấp
Kiểm soát thứ tự của các mặt hàngCao (
>>> from collections import OrderedDict

>>> keys = ["one", "two", "three"]
>>> OrderedDict.fromkeys(keys, 0)
OrderedDict([('one', 0), ('two', 0), ('three', 0)])
3, nâng cao
>>> from collections import OrderedDict

>>> keys = ["one", "two", "three"]
>>> OrderedDict.fromkeys(keys, 0)
OrderedDict([('one', 0), ('two', 0), ('three', 0)])
4)
Yêu cầu thấp (loại bỏ và kiểm tra lại các mục)
Hiệu suất hoạt độngThấpCao
ThấpCaoThấp
Kiểm soát thứ tự của các mặt hàngCao (
>>> from collections import OrderedDict

>>> keys = ["one", "two", "three"]
>>> OrderedDict.fromkeys(keys, 0)
OrderedDict([('one', 0), ('two', 0), ('three', 0)])
3, nâng cao
>>> from collections import OrderedDict

>>> keys = ["one", "two", "three"]
>>> OrderedDict.fromkeys(keys, 0)
OrderedDict([('one', 0), ('two', 0), ('three', 0)])
4)
Yêu cầu thấp (loại bỏ và kiểm tra lại các mục)
Hiệu suất hoạt độngTiêu thụ bộ nhớCác bài kiểm tra bình đẳng xem xét thứ tự của các mặt hàng
ĐúngKhôngYêu cầu thấp (loại bỏ và kiểm tra lại các mục)
Hiệu suất hoạt độngTiêu thụ bộ nhớTiêu thụ bộ nhớ

Các bài kiểm tra bình đẳng xem xét thứ tự của các mặt hàng

Xây dựng hàng đợi dựa trên từ điển

Một trường hợp sử dụng trong đó bạn nên xem xét sử dụng đối tượng

>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
5 thay vì đối tượng
>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
6 là khi bạn cần thực hiện hàng đợi dựa trên từ điển. Hàng đợi là các cấu trúc dữ liệu phổ biến và hữu ích quản lý các mục của họ theo cách FIFO. Điều này có nghĩa là bạn đẩy vào các vật phẩm mới ở cuối hàng đợi, và các mặt hàng cũ bật ra từ đầu hàng đợi.

Thông thường, hàng đợi thực hiện một hoạt động để thêm một mục vào cuối của chúng, được gọi là hoạt động enqueue. Hàng đợi cũng thực hiện một hoạt động để loại bỏ các mục từ khi bắt đầu, được gọi là hoạt động dequeue.enqueue operation. Queues also implement an operation to remove items from their beginning, which is known as a dequeue operation.

Để tạo hàng đợi dựa trên từ điển, hãy kích hoạt Trình chỉnh sửa mã hoặc IDE của bạn, hãy tạo một mô-đun Python mới có tên là

>>> from collections import OrderedDict

>>> numbers = OrderedDict()

>>> numbers["one"] = 1
>>> numbers["two"] = 2
>>> numbers["three"] = 3

>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])
63 và thêm mã sau vào nó:

>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
3

Trong

>>> from collections import OrderedDict

>>> numbers = OrderedDict()

>>> numbers["one"] = 1
>>> numbers["two"] = 2
>>> numbers["three"] = 3

>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])
64, trước tiên bạn khởi tạo một thuộc tính thể hiện được gọi là
>>> from collections import OrderedDict

>>> numbers = OrderedDict()

>>> numbers["one"] = 1
>>> numbers["two"] = 2
>>> numbers["three"] = 3

>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])
65. Thuộc tính này chứa một từ điển được đặt hàng trống mà bạn sẽ sử dụng để lưu trữ dữ liệu. Trình khởi tạo lớp có một đối số tùy chọn đầu tiên,
>>> from collections import OrderedDict

>>> numbers = OrderedDict()

>>> numbers["one"] = 1
>>> numbers["two"] = 2
>>> numbers["three"] = 3

>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])
66, cho phép bạn cung cấp dữ liệu ban đầu khi bạn khởi tạo lớp. Bộ khởi tạo cũng có các đối số từ khóa tùy chọn (
>>> from collections import OrderedDict

>>> numbers = OrderedDict()

>>> numbers["one"] = 1
>>> numbers["two"] = 2
>>> numbers["three"] = 3

>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])
67) để cho phép bạn sử dụng các đối số từ khóa trong hàm tạo.

Sau đó, bạn mã

>>> from collections import OrderedDict

>>> numbers = OrderedDict()

>>> numbers["one"] = 1
>>> numbers["two"] = 2
>>> numbers["three"] = 3

>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])
68, cho phép bạn thêm các cặp giá trị khóa vào hàng đợi. Trong trường hợp này, bạn sử dụng
>>> from collections import OrderedDict

>>> keys = ["one", "two", "three"]
>>> OrderedDict.fromkeys(keys, 0)
OrderedDict([('one', 0), ('two', 0), ('three', 0)])
3 nếu khóa đã tồn tại và bạn sử dụng một bài tập bình thường cho các khóa mới. Lưu ý rằng để phương pháp này hoạt động, bạn cần cung cấp một
{'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12}
02 hoặc
{'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12}
01 hai mục với một cặp giá trị khóa hợp lệ.

Việc triển khai

>>> from collections import OrderedDict

>>> numbers = OrderedDict()

>>> numbers["one"] = 1
>>> numbers["two"] = 2
>>> numbers["three"] = 3

>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])
72 sử dụng
>>> from collections import OrderedDict

>>> keys = ["one", "two", "three"]
>>> OrderedDict.fromkeys(keys, 0)
OrderedDict([('one', 0), ('two', 0), ('three', 0)])
4 với
{'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12}
54 được đặt thành
{'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12}
56 để xóa và trả lại các mục từ đầu từ điển được đặt hàng cơ bản,
>>> from collections import OrderedDict

>>> numbers = OrderedDict()

>>> numbers["one"] = 1
>>> numbers["two"] = 2
>>> numbers["three"] = 3

>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])
65. Trong trường hợp này, bạn sử dụng khối
>>> from collections import OrderedDict

>>> numbers = OrderedDict()

>>> numbers["one"] = 1
>>> numbers["two"] = 2
>>> numbers["three"] = 3

>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])
77 ____ ____278 để xử lý
{'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4, 'g': 7, 'f': 6, 'i': 9, 'h': 8, 'k': 11, 'j': 10, 'm': 13, 'l': 12}
53 xảy ra khi bạn gọi
>>> from collections import OrderedDict

>>> keys = ["one", "two", "three"]
>>> OrderedDict.fromkeys(keys, 0)
OrderedDict([('one', 0), ('two', 0), ('three', 0)])
4 trên một từ điển trống.

Phương pháp đặc biệt

>>> from collections import OrderedDict

>>> numbers = OrderedDict()

>>> numbers["one"] = 1
>>> numbers["two"] = 2
>>> numbers["three"] = 3

>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])
81 cung cấp chức năng cần thiết để truy xuất độ dài của từ điển được đặt hàng nội bộ,
>>> from collections import OrderedDict

>>> numbers = OrderedDict()

>>> numbers["one"] = 1
>>> numbers["two"] = 2
>>> numbers["three"] = 3

>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])
65. Cuối cùng, phương pháp đặc biệt
>>> from collections import OrderedDict

>>> numbers = OrderedDict()

>>> numbers["one"] = 1
>>> numbers["two"] = 2
>>> numbers["three"] = 3

>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])
83 cung cấp biểu diễn chuỗi thân thiện với người dùng của hàng đợi khi bạn in cấu trúc dữ liệu lên màn hình.string representation of the queue when you print the data structure to the screen.

Dưới đây là một số ví dụ về cách bạn có thể sử dụng

>>> from collections import OrderedDict

>>> numbers = OrderedDict()

>>> numbers["one"] = 1
>>> numbers["two"] = 2
>>> numbers["three"] = 3

>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])
64:

>>>

>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
4

Trong ví dụ mã này, trước tiên bạn tạo ba đối tượng

>>> from collections import OrderedDict

>>> numbers = OrderedDict()

>>> numbers["one"] = 1
>>> numbers["two"] = 2
>>> numbers["three"] = 3

>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])
64 khác nhau bằng cách sử dụng các phương pháp khác nhau. Sau đó, bạn sử dụng
>>> from collections import OrderedDict

>>> numbers = OrderedDict()

>>> numbers["one"] = 1
>>> numbers["two"] = 2
>>> numbers["three"] = 3

>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])
68 để thêm một mục duy nhất vào cuối
>>> from collections import OrderedDict

>>> numbers = OrderedDict()

>>> numbers["one"] = 1
>>> numbers["two"] = 2
>>> numbers["three"] = 3

>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])
87. Cuối cùng, bạn gọi
>>> from collections import OrderedDict

>>> numbers = OrderedDict()

>>> numbers["one"] = 1
>>> numbers["two"] = 2
>>> numbers["three"] = 3

>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])
72 nhiều lần để xóa tất cả các mục trong
>>> from collections import OrderedDict

>>> numbers = OrderedDict()

>>> numbers["one"] = 1
>>> numbers["two"] = 2
>>> numbers["three"] = 3

>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])
87. Lưu ý rằng cuộc gọi cuối cùng đến
>>> from collections import OrderedDict

>>> numbers = OrderedDict()

>>> numbers["one"] = 1
>>> numbers["two"] = 2
>>> numbers["three"] = 3

>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])
72 in một thông báo lên màn hình để thông báo cho bạn rằng hàng đợi đã trống.

Sự kết luận

Trong nhiều năm, từ điển Python là cấu trúc dữ liệu không đặt hàng. Điều này cho thấy sự cần thiết của một từ điển được đặt hàng giúp trong các tình huống trong đó thứ tự của các mặt hàng là quan trọng. Vì vậy, các nhà phát triển Python đã tạo ra

>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
5, được thiết kế đặc biệt để giữ cho các mặt hàng của nó được đặt hàng.order of items is important. So Python developers created
>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
5, which was specially designed to keep its items ordered.

Python 3.6 đã giới thiệu một tính năng mới vào từ điển thông thường. Bây giờ họ cũng nhớ thứ tự của các mặt hàng. Với sự bổ sung này, hầu hết các lập trình viên Python tự hỏi liệu họ có cần xem xét sử dụng

>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
5 không.

Trong hướng dẫn này, bạn đã học được:

  • Cách tạo và sử dụng các đối tượng
    >>> from collections import OrderedDict
    
    >>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
    >>> numbers
    OrderedDict([('one', 1), ('two', 2), ('three', 3)])
    
    >>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
    >>> letters
    OrderedDict([('c', 3), ('a', 1), ('b', 2)])
    
    5 trong mã của bạn
    >>> from collections import OrderedDict
    
    >>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
    >>> numbers
    OrderedDict([('one', 1), ('two', 2), ('three', 3)])
    
    >>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
    >>> letters
    OrderedDict([('c', 3), ('a', 1), ('b', 2)])
    
    5 objects
    in your code
  • Sự khác biệt chính là gì giữa
    >>> from collections import OrderedDict
    
    >>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
    >>> numbers
    OrderedDict([('one', 1), ('two', 2), ('three', 3)])
    
    >>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
    >>> letters
    OrderedDict([('c', 3), ('a', 1), ('b', 2)])
    
    5 và
    >>> from collections import OrderedDict
    
    >>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
    >>> numbers
    OrderedDict([('one', 1), ('two', 2), ('three', 3)])
    
    >>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
    >>> letters
    OrderedDict([('c', 3), ('a', 1), ('b', 2)])
    
    6differences are between
    >>> from collections import OrderedDict
    
    >>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
    >>> numbers
    OrderedDict([('one', 1), ('two', 2), ('three', 3)])
    
    >>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
    >>> letters
    OrderedDict([('c', 3), ('a', 1), ('b', 2)])
    
    5 and
    >>> from collections import OrderedDict
    
    >>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
    >>> numbers
    OrderedDict([('one', 1), ('two', 2), ('three', 3)])
    
    >>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
    >>> letters
    OrderedDict([('c', 3), ('a', 1), ('b', 2)])
    
    6
  • Những ưu và nhược điểm của việc sử dụng
    >>> from collections import OrderedDict
    
    >>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
    >>> numbers
    OrderedDict([('one', 1), ('two', 2), ('three', 3)])
    
    >>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
    >>> letters
    OrderedDict([('c', 3), ('a', 1), ('b', 2)])
    
    5 so với
    >>> from collections import OrderedDict
    
    >>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
    >>> numbers
    OrderedDict([('one', 1), ('two', 2), ('three', 3)])
    
    >>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
    >>> letters
    OrderedDict([('c', 3), ('a', 1), ('b', 2)])
    
    6pros and cons are of using
    >>> from collections import OrderedDict
    
    >>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
    >>> numbers
    OrderedDict([('one', 1), ('two', 2), ('three', 3)])
    
    >>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
    >>> letters
    OrderedDict([('c', 3), ('a', 1), ('b', 2)])
    
    5 vs
    >>> from collections import OrderedDict
    
    >>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
    >>> numbers
    OrderedDict([('one', 1), ('two', 2), ('three', 3)])
    
    >>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
    >>> letters
    OrderedDict([('c', 3), ('a', 1), ('b', 2)])
    
    6

Bây giờ, bạn có thể ở một vị trí tốt hơn để đưa ra quyết định có giáo dục về việc sử dụng

>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
6 hay
>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
5 nếu mã của bạn cần một từ điển được đặt hàng.

Trong hướng dẫn này, bạn đã mã hóa một ví dụ về cách thực hiện hàng đợi dựa trên từ điển, đây là trường hợp sử dụng cho thấy

>>> from collections import OrderedDict

>>> numbers = OrderedDict([("one", 1), ("two", 2), ("three", 3)])
>>> numbers
OrderedDict([('one', 1), ('two', 2), ('three', 3)])

>>> letters = OrderedDict({("a", 1), ("b", 2), ("c", 3)})
>>> letters
OrderedDict([('c', 3), ('a', 1), ('b', 2)])
5 vẫn có thể có giá trị trong các cuộc phiêu lưu mã hóa Python hàng ngày của bạn.

Là một từ điển luôn luôn theo thứ tự Python?

Kể từ Python 3.6, đối với việc triển khai Python Cpython, từ điển hãy nhớ thứ tự của các mục được chèn vào. Đây được coi là một chi tiết thực hiện trong Python 3.6; Bạn cần sử dụng OrderEddict nếu bạn muốn đặt hàng chèn được đảm bảo trong các triển khai khác của Python (và hành vi được đặt hàng khác).dictionaries remember the order of items inserted. This is considered an implementation detail in Python 3.6; you need to use OrderedDict if you want insertion ordering that's guaranteed across other implementations of Python (and other ordered behavior).

Làm thế nào để bạn sắp xếp lại một từ điển trong Python?

Để sắp xếp từ điển theo giá trị trong Python, bạn có thể sử dụng hàm Sắp xếp ().Hàm Sắp xếp () của Python có thể được sử dụng để sắp xếp từ điển theo khóa, cho phép phương thức sắp xếp tùy chỉnh.Sắp xếp () lấy ba đối số: đối tượng, khóa và đảo ngược.Từ điển là cấu trúc dữ liệu không theo thứ tự.use the sorted() function. Python's sorted() function can be used to sort dictionaries by key, which allows for a custom sorting method. sorted() takes three arguments: object, key, and reverse. Dictionaries are unordered data structures.

Từ điển có được tự động sắp xếp trong Python không?

Nó không phải là sắp xếp.Dict không được đặt hàng, vì vậy bạn không thể ảnh hưởng đến thứ tự chính theo bất kỳ cách nào.. dict is not ordered at all, so you cannot influence the key order in any way.

Dict có giữ trật tự không?

Từ điển sẽ sử dụng một thứ tự giúp tìm kiếm hiệu quả và bạn không thể thay đổi điều đó, bạn chỉ có thể sử dụng danh sách các đối tượng (một phần tử 2 trong một trường hợp đơn giản hoặc thậm chí là một lớp) và nối các mục vào cuối. that makes searching efficient, and you cant change that, You could just use a list of objects (a 2 element tuple in a simple case, or even a class), and append items to the end.