Python 中的ordereddct
OrderedDict 是Python 中Dict 对象的子类。字典和ordereddct的区别在于ordereddct本身维护插入键的顺序,而字典中的键顺序不是重要的部分。
OrderedDict 是一个标准库类。它位于模块 collections 中。
使用时,用户需要导入collections默认库模块。
示例:
import collections
在本文中,我们将讨论ordereddct的一些操作以及Dict与ordereddct的不同之处。
用户可以在Dict类和OrderedDict类中放置一些键和许多带有值的键。在下面的示例中,我们将展示如何更改 Dict 类的顺序,但对于 OrderedDict 类,顺序保持不变。
示例:
import collections
# we will first create normal dict
print('Dict:')
user_dict = {}
user_dict['PP'] = 10
user_dict['QQ'] = 20
user_dict['RR'] = 30
user_dict['SS'] = 40
user_dict['TT'] = 50
user_dict['UU'] = 60
for item in user_dict.items():
print(item)
print()
# now, we will create ordered dict
print('OrderedDict:')
user_ordered_dict = collections.OrderedDict()
user_ordered_dict['PP'] = 10
user_ordered_dict['QQ'] = 20
user_ordered_dict['RR'] = 30
user_ordered_dict['SS'] = 40
user_ordered_dict['TT'] = 50
user_ordered_dict['UU'] = 60
for item in user_ordered_dict.items():
print(item)
输出:
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)
更改特定键的值
对于ordereddct类,改变特定键的值后,键的顺序不会改变,但在Dict类中,顺序可能会改变,也可能不会改变。
示例:
import collections
# we will first create normal dict
print('Dict:')
user_dict = {}
user_dict['PP'] = 10
user_dict['QQ'] = 20
user_dict['RR'] = 30
user_dict['SS'] = 40
user_dict['TT'] = 50
user_dict['UU'] = 60
for item in user_dict.items():
print(item)
#now, we will change the value for key QQ
user_dict['QQ'] = 111
print('After changing value of specific key in Dict')
for item in user_dict.items():
print(item)
print()
#we will create ordered dict
print('OrderedDict:')
user_ordered_dict = collections.OrderedDict()
user_ordered_dict['PP'] = 10
user_ordered_dict['QQ'] = 20
user_ordered_dict['RR'] = 30
user_ordered_dict['SS'] = 40
user_ordered_dict['TT'] = 50
user_ordered_dict['UU'] = 60
for item in user_ordered_dict.items():
print(item)
# now, we will change the value for specific key QQ
user_ordered_dict['QQ'] = 111
print('After changing value of specific key in Ordered Dict')
for item in user_ordered_dict.items():
print(item)
输出:
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 类在插入期间保持顺序,但在执行删除过程时,它会删除顺序信息并将重新插入的元素视为新记录。
示例:
import collections
#we will create ordered dict
print('OrderedDict:')
user_ordered_dict = collections.OrderedDict()
user_ordered_dict['PP'] = 10
user_ordered_dict['QQ'] = 20
user_ordered_dict['RR'] = 30
user_ordered_dict['SS'] = 40
user_ordered_dict['TT'] = 50
user_ordered_dict['UU'] = 60
for item in user_ordered_dict.items():
print(item)
#First we will delete item in key RR
user_ordered_dict.pop('RR')
print('After Deleting the key')
for item in user_ordered_dict.items():
print(item)
#now, we will re-inserte the item
user_ordered_dict['RR'] = 30
print('After Re-inserting the key and value')
for item in user_ordered_dict.items():
print(item)
输出:
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类的开头插入一些元素时,他/她可以使用“Update”方法。
示例:
from collections import OrderedDict
user_ordered_dict = OrderedDict([('Jake', '10'), ('John', '20'), ('Ross', '40')])
print("The current dictionary values are :")
print(user_ordered_dict)
user_ordered_dict.update({'Ryan':'70'})
user_ordered_dict.move_to_end('Ryan', last = False)
print("The updated dictionary values are : ")
print(user_ordered_dict)
上面代码中:
- 首先我们导入了必要的包。
- 然后我们使用顺序坐标创建了一个有序字典。
- 我们使用“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”方法。让我们通过下面的例子来理解一下。
示例:
from collections import OrderedDict
def check_order(user_input, user_pattern):
user_dict = OrderedDict.fromkeys(user_input)
pattern_length = 0
for key,value in user_dict.items():
if (key == user_pattern[pattern_length]):
pattern_length = pattern_length + 1
if (pattern_length == (len(user_pattern))):
return 'The order of pattern is correct'
return 'The order of pattern is incorrect'
user_input = 'Hello Jake'
input_pattern = 'Ja'
print("The string is ")
print(user_input)
print("The input pattern is ")
print(input_pattern)
print(check_order(user_input,input_pattern))
user_input = 'Hello Jake'
input_pattern = 'ke'
print("The string is ")
print(user_input)
print("The input pattern is ")
print(input_pattern)
print(check_order(user_input,input_pattern))
上述代码中:
- 首先我们导入必要的包。
- 然后我们定义“check_order”方法,它有两个参数。
- 然后我们使用“from-keys”方法创建了一个有序字典。
- 我们已将模式的长度初始化为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 中删除和插入项目,以及如何在字典顺序的开头重新排列它们。
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
code前端网