Python 中的 OrderedDict

17 Mar 2025 | 5 分钟阅读

OrderedDict 是 Python 中 dict 对象的子类。dictOrderedDict 之间的区别在于,OrderedDict 本身会维护键的插入顺序,而在 dict 中,键的顺序并不重要。

OrderedDict 是标准库类。它位于 collections 模块中。

要使用它,用户需要导入 collections 标准库模块。

示例

在本文中,我们将讨论 OrderedDict 的一些操作以及 Dict 与 OrderedDict 的区别。

用户可以在 Dict 类和 OrderedDict 类中放入一些键和很多带值的项。在下面的示例中,我们将展示 Dict 类的顺序如何变化,但对于 OrderedDict 类,它将保持固定。

示例

输出

Dict:
('PP', 10)
('QQ', 20)
('RR', 30)
('SS', 40)
('TT', 50)
('UU', 60)

OrderedDict:
('PP', 10)
('QQ', 20)
('RR', 30)
('SS', 40)
('TT', 50)
('UU', 60)

更改特定键的值

更改特定键的值后,OrderedDict 类的键顺序不会改变,但在 Dict 类中,顺序可能会改变,也可能不会改变。

示例

输出

Dict:
('PP', 10)
('QQ', 20)
('RR', 30)
('SS', 40)
('TT', 50)
('UU', 60)
After changing value of specific key in Dict
('PP', 10)
('QQ', 111)
('RR', 30)
('SS', 40)
('TT', 50)
('UU', 60)

OrderedDict:
('PP', 10)
('QQ', 20)
('RR', 30)
('SS', 40)
('TT', 50)
('UU', 60)
After changing value of specific key in Ordered Dict
('PP', 10)
('QQ', 111)
('RR', 30)
('SS', 40)
('TT', 50)
('UU', 60)

删除并重新插入 OrderedDict 类中的元素

当我们从 OrderedDict 类中删除一个元素然后对该特定键和值执行重新插入操作时,它会将该元素推到最后。虽然,OrderedDict 类在插入过程中维护顺序,但在删除过程中,它会移除顺序信息,并将重新插入的元素视为新条目。

示例

输出

OrderedDict:
('PP', 10)
('QQ', 20)
('RR', 30)
('SS', 40)
('TT', 50)
('UU', 60)
After Deleting the key
('PP', 10)
('QQ', 20)
('SS', 40)
('TT', 50)
('UU', 60)
After Re-inserting the key and value
('PP', 10)
('QQ', 20)
('SS', 40)
('TT', 50)
('UU', 60)
('RR', 30)

如何在 OrderedDict 的开头插入

当用户想在 OrderedDict 类的开头插入一个元素时,他/她可以使用 'update' 方法。

示例

在上面的代码中

  • 首先,我们导入了所需的包。
  • 然后,我们使用 OrdereDict 创建了有序字典。
  • 我们使用 'update' 方法来指定键及其值。
  • 然后,我们使用 'move_to_end' 函数将键及其值移动到末尾。
  • 显示了所需的输出。

输出

The current dictionary values are :
OrderedDict([('Jake', '10'), ('John', '20'), ('Ross', '40')])
The updated dictionary values are : 
OrderedDict([('Ryan', '70'), ('Jake', '10'), ('John', '20'), ('Ross', '40')])

如何使用 OrderedDict 检查字符串中字符的顺序

如果用户想检查字符串中字符的顺序,他们可以使用 'OrderedDict' 方法。让我们了解以下示例。

示例

在上面的代码中

  • 首先,我们导入了所需的包。
  • 然后,我们定义了 'check_order' 方法,该方法将接受两个参数。
  • 然后,我们使用 'fromkeys' 方法创建了有序字典。
  • 我们将模式的长度初始化为 0。
  • 如果键等于模式,则模式的长度将增加。
  • 但是,如果模式的长度与当前长度相同,这意味着顺序是正确的。否则,顺序是不正确的。

输出

The string is 
Hello Jake
The input pattern is 
Ja
The order of pattern is correct
The string is 
Hello Jake
The input pattern is 
ke
The order of pattern is incorrect

结论

在本教程中,我们讨论了 OrderedDict 以及它与普通字典的区别。我们还解释了用户如何删除和插入 OrderedDict 中的元素以及如何在字典顺序的开头重新排列它们。