gpt4 book ai didi

python - Python 3 中 OrderedDict 的 move_to_end 操作的时间复杂度是多少?

转载 作者:太空宇宙 更新时间:2023-11-03 10:49:04 27 4
gpt4 key购买 nike

我找到了 source code它似乎是 O(1),因为它基本上是链表和字典的更新。虽然我不确定。

你怎么看?谢谢!

最佳答案

您可以查看 OrderedDict.move_to_end() 的纯 Python 实现,相当于 C 实现:

def move_to_end(self, key, last=True):
'''Move an existing element to the end (or beginning if last is false).
Raise KeyError if the element does not exist.
'''
link = self.__map[key]
link_prev = link.prev
link_next = link.next
soft_link = link_next.prev
link_prev.next = link_next
link_next.prev = link_prev
root = self.__root
if last:
last = root.prev
link.prev = last
link.next = root
root.prev = soft_link
last.next = link
else:
first = root.next
link.prev = root
link.next = first
first.prev = soft_link
root.next = link

基本上,此方法在字典 self.__map 的链表中查找链接,并更新链接及其邻居的上一个和下一个指针。
由于上述所有操作都需要常数时间,因此 OrderedDict.move_to_end() 的复杂度也是常数。

关于python - Python 3 中 OrderedDict 的 move_to_end 操作的时间复杂度是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54808556/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com