Python 中的 OrderedDict
OrderedDict 是 Python 中 dict 物件的一個子類。OrderedDict 和 dict 之間的唯一區別在於,OrderedDict 按照鍵被插入的順序來維護鍵的順序。在 dict 中,順序可能發生,也可能不發生。
OrderedDict 是一個標準庫類,它位於 collections 模組中。
要使用它,我們首先需要匯入 collections 標準庫模組。
import collections
在本節中,我們將對 OrderedDict 以及 OrderedDict 和 Dict 之間的差異進行一些操作。
我們可以將一些鍵和值放入 Dict 和 OrderedDict 中。在此示例中,我們可以看到 Dict 的順序可能有所不同。但對於 OrderedDict 來說,它將是固定的。
示例程式碼
import collections
#Create normal dict
my_dict = {}
my_dict['AA'] = 11
my_dict['BB'] = 22
my_dict['CC'] = 33
my_dict['DD'] = 44
for item in my_dict.items():
print(item)
print()
#Create ordered dict
my_ord_dict = collections.OrderedDict()
my_ord_dict['AA'] = 11
my_ord_dict['BB'] = 22
my_ord_dict['CC'] = 33
my_ord_dict['DD'] = 44
for item in my_ord_dict.items():
print(item)
輸出
('AA', 11)
('CC', 33)
('BB', 22)
('DD', 44)
('AA', 11)
('BB', 22)
('CC', 33)
('DD', 44)
更改指定鍵的值
更改指定鍵的值時,OrderedDict 的鍵順序不會改變。我們可以看到,對於 Dict 型別物件,該語句可能為真,也可能為假。
示例程式碼
import collections
#Create normal dict
my_dict = {}
my_dict['AA'] = 11
my_dict['BB'] = 22
my_dict['CC'] = 33
my_dict['DD'] = 44
for item in my_dict.items():
print(item)
#Change the value for key BB
my_dict['BB'] = 100
print('After changing in Dict')
for item in my_dict.items():
print(item)
print()
#Create ordered dict
my_ord_dict = collections.OrderedDict()
my_ord_dict['AA'] = 11
my_ord_dict['BB'] = 22
my_ord_dict['CC'] = 33
my_ord_dict['DD'] = 44
for item in my_ord_dict.items():
print(item)
#Change the value for key BB
my_ord_dict['BB'] = 100
print('After changing in Ordered Dict')
for item in my_ord_dict.items():
print(item)
輸出
('AA', 11)
('BB', 22)
('CC', 33)
('DD', 44)
After changing in Dict
('AA', 11)
('CC', 33)
('DD', 44)
('BB', 100)
('AA', 11)
('BB', 22)
('CC', 33)
('DD', 44)
After changing in Ordered Dict
('AA', 11)
('BB', 100)
('CC', 33)
('DD', 44)
從 OrderedDict 中刪除元素並重新插入元素
從字典中刪除某個元素,再對該鍵值執行重新插入操作時,將會將其移至末端。雖然插入時維持了順序,但對於刪除,它會移除排序資訊,並將其視為重新插入的新條目。
示例程式碼
import collections
#Create ordered dict
my_ord_dict = collections.OrderedDict()
my_ord_dict['AA'] = 11
my_ord_dict['BB'] = 22
my_ord_dict['CC'] = 33
my_ord_dict['DD'] = 44
for item in my_ord_dict.items():
print(item)
#Delete item in key BB
my_ord_dict.pop('BB')
print('After Deleting')
for item in my_ord_dict.items():
print(item)
#re-inserting item
my_ord_dict['BB'] = 22
print('After Re-inserting')
for item in my_ord_dict.items():
print(item)
輸出
('AA', 11)
('BB', 22)
('CC', 33)
('DD', 44)
After Deleting
('AA', 11)
('CC', 33)
('DD', 44)
After Re-inserting
('AA', 11)
('CC', 33)
('DD', 44)
('BB', 22)
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP