📜  Python中有序字典的方法

📅  最后修改于: 2022-05-13 01:55:18.123000             🧑  作者: Mango

Python中有序字典的方法

有序字典 是一个字典,它记住第一次插入键的顺序。如果新条目覆盖现有条目,则原始插入位置保持不变。删除条目并重新插入会将其移至末尾。有序字典可以在使用哈希映射和队列的地方使用。它兼有两者的特点。像队列一样,它记住顺序,它还允许在两端插入和删除。和字典一样,它的行为也像哈希映射。

注意:从Python 3.6 开始,为传递给 OrderedDict 构造函数的关键字参数保留顺序,请参阅 PEP-468。

有序字典的方法

让我们看看有序字典提供的各种方法。

  • 流行音乐():

此方法用于从头删除一个键。

句法:

popitem(last = True)                      

如果最后一个为 False,则此方法将从字典的开头删除一个键。这在队列中充当 FIFO(先进先出),否则它会从字典末尾删除键。

时间复杂度: O(1)。

为了更好地理解,请查看代码。

Python3
from collections import OrderedDict
 
 
ord_dict = OrderedDict().fromkeys('GeeksForGeeks')
print("Original Dictionary")
print(ord_dict)
 
# Pop the key from last
ord_dict.popitem()
print("\nAfter Deleting Last item :")
print(ord_dict)
 
# Pop the key from beginning
ord_dict.popitem(last = False)
print("\nAfter Deleting Key from Beginning :")
print(ord_dict)


Python3
from collections import OrderedDict
 
 
ord_dict = OrderedDict().fromkeys('GeeksForGeeks')
print("Original Dictionary")
print(ord_dict)
 
# Move the key to  end
ord_dict.move_to_end('G')
print("\nAfter moving key 'G' to end of dictionary :")
print(ord_dict)
 
# Move the key to beginning
ord_dict.move_to_end('k', last = False)
print("\nAfter moving Key in the Beginning :")
print(ord_dict)


输出:

  • move_to_end():

此方法用于将字典的现有键移动到末尾或开头。此函数有两个版本 -

句法:

move_to_end(key, last = True)

如果最后一个为 True,则此方法将在最后移动字典的现有键,否则它将在开头移动字典的现有键。如果键在开始时移动,则它在队列中充当 FIFO(先进先出)。

时间复杂度: O(1)

Python3

from collections import OrderedDict
 
 
ord_dict = OrderedDict().fromkeys('GeeksForGeeks')
print("Original Dictionary")
print(ord_dict)
 
# Move the key to  end
ord_dict.move_to_end('G')
print("\nAfter moving key 'G' to end of dictionary :")
print(ord_dict)
 
# Move the key to beginning
ord_dict.move_to_end('k', last = False)
print("\nAfter moving Key in the Beginning :")
print(ord_dict)

输出:

move_to_end()函数的工作

基本上,此方法在字典 self.__map 的链表中查找链接,并更新链接及其邻居的前一个和下一个指针。它从其位置删除该元素,并根据参数值将其添加到末尾或开头。由于以下所有操作都需要恒定的时间,因此OrderedDict.move_to_end()的复杂性也是恒定的。