我們想創建壹個字典,同時當對字典做叠代或序列化操作時,也能控制其中元素的順序。2、解決方案
要控制字典中元素的順序,可以使用collections模塊中的OrderedDict類。當對字典做叠代時,它會嚴格按照元素初始添加的順序進行。
from collections import OrderedDict
d=OrderedDict()
d['a']=1
d['b']=2
d['c']=3
d['d']=4
#根據插入刪除輸出
for key in d:
print(key,d[key])結果:
a 1
b 2
c 3
d 4當想構建壹個映射結構以便稍後對其做序列化或編碼成另壹種格式時,OrderedDict就顯得特別有用。例如:如果想在進行JSON編碼時精確控制各字段的順序,那麽只要首先在OrderedDict中構建數據就可以了:
from collections import OrderedDict
import json
d=OrderedDict()
d['a']=1
d['b']=2
d['c']=3
d['d']=4
j=json.dumps(d)
print(j)結果:
{"a": 1, "b": 2, "c": 3, "d": 4}OrderedDict內部維護了壹個雙向鏈表,它會根據元素加入的順序來排列鍵的位置。第壹個新加入的元素被放置在鏈表的末尾,接下來對已存在的鍵做重新賦值,不會改變鍵的位置。請註意:OrderedDict的大小是普通字典的2倍。這是由於它額外創建的鏈表所致。因此,如果打算構建壹個涉及大量OrderedDict實例的數據結構(例如從CSV文件中讀取100 000行行內容到OrderedDict列表中),那麽需要認證對應用做需求分析,從而判斷使用OrderedDict所帶來的好處是否能超越因額外的內存開銷所帶來的缺點。