Hướng dẫn python ordereddict time complexity - độ phức tạp của thời gian ra lệnh trong python
Bạn có thể kiểm tra triển khai Python thuần túy của
Về cơ bản, phương pháp này tìm kiếm một liên kết trong một danh sách được liên kết trong từ điển Một đơn đặt hàng, một lệnh ghi nhớ thứ tự trong các khóa đó lần đầu tiên được chèn. Nếu một mục mới ghi đè lên một mục nhập hiện có, vị trí chèn ban đầu không thay đổi. Xóa một mục nhập và tái cấu trúc nó sẽ di chuyển nó đến cuối cùng. Từ điển được đặt hàng bằng cách nào đó có thể được sử dụng ở nơi có việc sử dụng bản đồ băm và hàng đợi. Nó có đặc điểm của cả hai thành một. Giống như hàng đợi, nó nhớ thứ tự và nó cũng cho phép chèn và xóa ở cả hai đầu. Và giống như một từ điển, nó cũng hoạt động như một bản đồ băm. & Nbsp;OrderedDictis a dict that remembers the order in that keys were first inserted. If a new entry overwrites an existing entry, the original insertion position is left unchanged. Deleting an entry and reinserting it will move it to the end. Ordered dictionary somehow can be used in the place where there is a use of hash Map and queue. It has characteristics of both into one. Like queue, it remembers the order and it also allows insertion and deletion at both ends. And like a dictionary, it also behaves like a hash map. Lưu ý: Từ Python 3.6 trở đi, thứ tự được giữ lại cho các đối số từ khóa được chuyển cho hàm tạo đơn hàng, tham khảo PEP-468. & NBSP; From Python 3.6 onwards, the order is retained for keyword arguments passed to the OrderedDict constructor, refer to PEP-468. Phương pháp từ điển đặt hàngHãy cùng xem xét các phương pháp khác nhau được cung cấp bởi từ điển được đặt hàng. & NBSP;
Phương pháp này được sử dụng để xóa một khóa từ đầu. Syntax: popitem(last = True) Nếu cuối cùng là sai thì phương pháp này sẽ xóa một khóa từ đầu từ điển. Điều này đóng vai trò là FIFO (đầu tiên trong lần đầu tiên) trong hàng đợi nếu không, phương thức nó sẽ xóa khóa từ cuối từ điển. Độ phức tạp về thời gian: O (1).O(1). Để hiểu rõ hơn, hãy xem mã. Python3
popitem(last = True)0____11 popitem(last = True)2 popitem(last = True)3 popitem(last = True)4 popitem(last = True)5 popitem(last = True)6 popitem(last = True)7 popitem(last = True)4 popitem(last = True)5 move_to_end(key, last = True)0 move_to_end(key, last = True)1 popitem(last = True)5 popitem(last = True)6 move_to_end(key, last = True)4 popitem(last = True)4 popitem(last = True)5 move_to_end(key, last = True)0 popitem(last = True)5 popitem(last = True)6 popitem(last = True)7 popitem(last = True)4 popitem(last = True)5 popitem(last = True)6 OrderedDict.move_to_end() 4popitem(last = True)4 popitem(last = True)5 move_to_end(key, last = True)0 Output:
Phương pháp này được sử dụng để di chuyển một khóa hiện có của từ điển đến cuối hoặc đến đầu. Có hai phiên bản của chức năng này - & nbsp; Syntax: move_to_end(key, last = True) Nếu cuối cùng là đúng thì phương pháp này sẽ di chuyển một khóa hiện có của từ điển cuối cùng nếu không nó sẽ di chuyển một khóa hiện có của từ điển ngay từ đầu. Nếu khóa được di chuyển vào đầu thì nó đóng vai trò là FIFO (đầu tiên trong lần đầu tiên) trong một hàng đợi. Độ phức tạp về thời gian: O (1) & NBSP;O(1) Python3
popitem(last = True)0____11 popitem(last = True)2 popitem(last = True)3 popitem(last = True)4 popitem(last = True)5 popitem(last = True)6 popitem(last = True)7 popitem(last = True)4 popitem(last = True)5 move_to_end(key, last = True)0
popitem(last = True)4 popitem(last = True)5 popitem(last = True)6 OrderedDict.move_to_end() 8popitem(last = True)4 popitem(last = True)5 move_to_end(key, last = True)0
popitem(last = True)1 OrderedDict.move_to_end() 0popitem(last = True)4 popitem(last = True)5 popitem(last = True)6 collections 0popitem(last = True)4 popitem(last = True)5 move_to_end(key, last = True)0 Output:
Hoạt động của hàm di chuyển_to_end () Về cơ bản, phương pháp này tìm kiếm một liên kết trong một danh sách được liên kết trong bản đồ từ điển .__ và cập nhật các con trỏ trước và tiếp theo cho liên kết và hàng xóm của nó.Nó xóa phần tử đó khỏi vị trí của nó và thêm nó vào cuối hoặc bắt đầu tùy thuộc vào giá trị tham số.Vì tất cả các hoạt động dưới đây mất thời gian liên tục, sự phức tạp của OrderedDict.Move_TO_END () & NBSP; cũng không đổi. & NBSP; |