Liệu OrderedDict có trở nên thừa trong Python 3.7 không?


91

Từ bảng thay đổi Python 3.7 :

bản chất bảo toàn thứ tự chèn của các đối tượng dict đã được tuyên bố là một phần chính thức của đặc tả ngôn ngữ Python.

Điều này có nghĩa là điều đó OrderedDictsẽ trở nên thừa? Công dụng duy nhất mà tôi có thể nghĩ tới là duy trì khả năng tương thích ngược với các phiên bản Python cũ hơn, vốn không bảo toàn thứ tự chèn cho các từ điển thông thường.


Câu trả lời:


134

Không, nó sẽ không trở nên thừa trong Python 3.7 vì OrderedDictkhông chỉ là một phương dictthức giữ lại thứ tự chèn, nó còn cung cấp một phương thức phụ thuộc vào thứ tự OrderedDict.move_to_end()và hỗ trợ reversed()lặp lại *.

Hơn nữa, so sánh bình đẳng với OrderedDictlà thứ tự nhạy cảm và đây vẫn không phải là trường hợp dicttrong Python 3.7, ví dụ:

>>> OrderedDict([(1,1), (2,2)]) == OrderedDict([(2,2), (1,1)]) 
False
>>> dict([(1,1), (2,2)]) == dict([(2,2), (1,1)]) 
True

Hai câu hỏi liên quan ở đâyở đây .

* Hỗ trợ reversed()lặp lại Python thông thường dictđược thêm vào Python 3.8, xem vấn đề33462


Điểm về độ nhạy của đơn hàng khi so sánh là rất hợp lý ở đây.
Tim Skov Jacobsen
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.