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 類的開頭插入一些元素時,他/她可以使用「更新」方法。
示例:
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)
在上面的代碼中:
- 首先,我們已經導入了所需的包。
- 然後,我們通過使用 order ordinate 創建了有序字典。
- 我們使用「更新」方法來指定鍵及其值。
- 然後,我們使用’ 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」方法,該方法將採用兩個參數。
- 然後,我們使用「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 中刪除和插入元素,並在字典順序的開頭重新排列它們。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/246724.html
微信掃一掃
支付寶掃一掃