Hướng dẫn dùng ordereddict python python

Mô-đun bộ sưu tập của Python có một lớp con tuyệt vời khác của dict được gọi là OrderedDict. Như tên của nó, từ điển này theo dõi thứ tự của các phím khi chúng được thêm vào. Nếu bạn tạo một lệnh chính quy, bạn sẽ lưu ý rằng đó là một bộ sưu tập dữ liệu không có thứ tự:

>>> d = {'banana': 3, 'apple':4, 'pear': 1, 'orange': 2}
>>> d
{'apple': 4, 'banana': 3, 'orange': 2, 'pear': 1}

Mỗi khi bạn in nó ra, thứ tự có thể khác nhau. Đôi khi bạn sẽ cần phải lặp lại các khóa trong từ điển của mình theo một thứ tự cụ thể. Ví dụ, tôi đã có một trường hợp sử dụng khi tôi cần các khóa được sắp xếp để tôi có thể lặp qua chúng theo thứ tự. Để làm điều đó, bạn có thể làm như sau:

>>> keys = d.keys()
>>> keys
dict_keys(['apple', 'orange', 'banana', 'pear'])
>>> keys = sorted(keys)
['apple', 'banana', 'orange', 'pear']
>>> for key in keys:
...     print (key, d[key])
... 
apple 4
banana 3
orange 2
pear 1

Chúng ta hãy tạo một thể hiện của OrderedDict bằng cách sử dụng chính tả ban đầu của chúng tôi, nhưng trong quá trình tạo, chúng tôi sẽ sắp xếp các khóa của từ điển:

>>> from collections import OrderedDict
>>> d = {'banana': 3, 'apple':4, 'pear': 1, 'orange': 2}
>>> new_d = OrderedDict(sorted(d.items()))
>>> new_d
OrderedDict([('apple', 4), ('banana', 3), ('orange', 2), ('pear', 1)])
>>> for key in new_d:
...     print (key, new_d[key])
... 
apple 4
banana 3
orange 2
pear 1

Ở đây, chúng ta tạo OrderedDict bằng cách sắp xếp nó một cách nhanh chóng bằng hàm dựng sẵn được sắp xếp của Python . Hàm được sắp xếp có trong các mục của từ điển, đó là danh sách các bộ dữ liệu đại diện cho các cặp khóa của từ điển. Nó sắp xếp chúng và sau đó chuyển chúng vào OrderedDict, thứ sẽ giữ trật tự của chúng. Vì vậy, khi chúng ta đi in ra các khóa và giá trị, chúng theo thứ tự chúng ta mong đợi. Nếu bạn lặp qua một từ điển thông thường (không phải là danh sách các khóa được sắp xếp), thứ tự sẽ thay đổi mọi lúc.

Lưu ý rằng nếu bạn thêm khóa mới, chúng sẽ được thêm vào cuối OrderedDict thay vì được tự động sắp xếp.

Một điều khác cần lưu ý về OrderDicts là khi bạn đi so sánh hai OrderedDicts, họ sẽ không chỉ kiểm tra các mục cho sự bình đẳng mà còn là thứ tự đúng. Một từ điển thông thường chỉ nhìn vào nội dung của từ điển và không quan tâm đến thứ tự của nó.

Cuối cùng, OrderDicts có hai phương thức mới trong Python 3: popitemmove_to_end . Phương thức popitem sẽ trả về và xóa một cặp (khóa, vật phẩm). Phương thức move_to_end sẽ di chuyển một khóa hiện có đến một trong hai đầu của OrderedDict. Mục này sẽ được chuyển sang phải đến cuối nếu đối số cuối cùng cho OrderedDict được đặt thành True (là mặc định) hoặc bắt đầu nếu nó là Sai.

Thật thú vị, OrderedDicts hỗ trợ phép lặp ngược bằng cách sử dụng hàm tích hợp đảo ngược của Python:

>>> for key in reversed(new_d):
...     print (key, new_d[key])
... 
pear 1
orange 2
banana 3
apple 4

Khá gọn gàng, mặc dù bạn có thể sẽ không cần chức năng đó mỗi ngày.

Kết thúc

Tại thời điểm này, bạn nên sẵn sàng dùng thử OrderedDict cho chính mình. Đó là một bổ sung hữu ích cho bộ công cụ của bạn mà tôi hy vọng bạn sẽ tìm thấy nhiều cách sử dụng trong cơ sở mã của mình.

Đọc liên quan

  • Tài liệu chính thức   cho OrderedDict
  • Mô-đun Python trong tuần:  OrderedDict

4 hữu ích 0 bình luận 9.7k xem chia sẻ

Mô-đun bộ sưu tập của Python có một lớp con tuyệt vời khác của dict được gọi là OrderedDict. Như tên của nó, từ điển này theo dõi thứ tự của các phím khi chúng được thêm vào. Nếu bạn tạo một lệnh chính quy, bạn sẽ lưu ý rằng đó là một bộ sưu tập dữ liệu không có thứ tự:

>>> d = {'banana': 3, 'apple':4, 'pear': 1, 'orange': 2}
>>> d
{'apple': 4, 'banana': 3, 'orange': 2, 'pear': 1}

Mỗi khi bạn in nó ra, thứ tự có thể khác nhau. Đôi khi bạn sẽ cần phải lặp lại các khóa trong từ điển của mình theo một thứ tự cụ thể. Ví dụ, tôi đã có một trường hợp sử dụng khi tôi cần các khóa được sắp xếp để tôi có thể lặp qua chúng theo thứ tự. Để làm điều đó, bạn có thể làm như sau:

>>> keys = d.keys()
>>> keys
dict_keys(['apple', 'orange', 'banana', 'pear'])
>>> keys = sorted(keys)
['apple', 'banana', 'orange', 'pear']
>>> for key in keys:
...     print (key, d[key])
... 
apple 4
banana 3
orange 2
pear 1

Chúng ta hãy tạo một thể hiện của OrderedDict bằng cách sử dụng chính tả ban đầu của chúng tôi, nhưng trong quá trình tạo, chúng tôi sẽ sắp xếp các khóa của từ điển:

>>> from collections import OrderedDict
>>> d = {'banana': 3, 'apple':4, 'pear': 1, 'orange': 2}
>>> new_d = OrderedDict(sorted(d.items()))
>>> new_d
OrderedDict([('apple', 4), ('banana', 3), ('orange', 2), ('pear', 1)])
>>> for key in new_d:
...     print (key, new_d[key])
... 
apple 4
banana 3
orange 2
pear 1

Ở đây, chúng ta tạo OrderedDict bằng cách sắp xếp nó một cách nhanh chóng bằng hàm dựng sẵn được sắp xếp của Python . Hàm được sắp xếp có trong các mục của từ điển, đó là danh sách các bộ dữ liệu đại diện cho các cặp khóa của từ điển. Nó sắp xếp chúng và sau đó chuyển chúng vào OrderedDict, thứ sẽ giữ trật tự của chúng. Vì vậy, khi chúng ta đi in ra các khóa và giá trị, chúng theo thứ tự chúng ta mong đợi. Nếu bạn lặp qua một từ điển thông thường (không phải là danh sách các khóa được sắp xếp), thứ tự sẽ thay đổi mọi lúc.

Lưu ý rằng nếu bạn thêm khóa mới, chúng sẽ được thêm vào cuối OrderedDict thay vì được tự động sắp xếp.

Một điều khác cần lưu ý về OrderDicts là khi bạn đi so sánh hai OrderedDicts, họ sẽ không chỉ kiểm tra các mục cho sự bình đẳng mà còn là thứ tự đúng. Một từ điển thông thường chỉ nhìn vào nội dung của từ điển và không quan tâm đến thứ tự của nó.

Cuối cùng, OrderDicts có hai phương thức mới trong Python 3: popitemmove_to_end . Phương thức popitem sẽ trả về và xóa một cặp (khóa, vật phẩm). Phương thức move_to_end sẽ di chuyển một khóa hiện có đến một trong hai đầu của OrderedDict. Mục này sẽ được chuyển sang phải đến cuối nếu đối số cuối cùng cho OrderedDict được đặt thành True (là mặc định) hoặc bắt đầu nếu nó là Sai.

Thật thú vị, OrderedDicts hỗ trợ phép lặp ngược bằng cách sử dụng hàm tích hợp đảo ngược của Python:

>>> for key in reversed(new_d):
...     print (key, new_d[key])
... 
pear 1
orange 2
banana 3
apple 4

Khá gọn gàng, mặc dù bạn có thể sẽ không cần chức năng đó mỗi ngày.

Kết thúc

Tại thời điểm này, bạn nên sẵn sàng dùng thử OrderedDict cho chính mình. Đó là một bổ sung hữu ích cho bộ công cụ của bạn mà tôi hy vọng bạn sẽ tìm thấy nhiều cách sử dụng trong cơ sở mã của mình.

Đọc liên quan

  • Tài liệu chính thức   cho OrderedDict
  • Mô-đun Python trong tuần:  OrderedDict

4 hữu ích 0 bình luận 9.7k xem chia sẻ