1. 程式人生 > >python有序字典

python有序字典

轉換 https style 沒有 order 順序輸出 兩種 有序字典 發現

https://www.cnblogs.com/tianyiliang/p/8260741.html

最近的django開發中用到了有序字典,所以研究了一下,以下。

示例:

有序字典和通常字典類似,只是它可以記錄元素插入其中的順序,而一般字典是會以任意的順序叠代的。

普通字典:

技術分享圖片
1 d1={}
2 d1[a‘]=A3 d1[b‘]=B4 d1[c‘]=C5 d1[d‘]=D#此時的d1 = {‘a‘:‘A‘,‘b‘:‘B‘,‘c‘:‘C‘,‘d‘:‘D‘}
6 for k,v in d1.items():
7     print k,v
技術分享圖片

輸出結果為:

1 a A
2 c C
3 b B
4 d D

由上面的結果可以看出對普通字典進行遍歷,輸出結果是無序的。

下面是有序字典(需要導入collections包):

技術分享圖片
1 import collections
2 d1={}
3 d1=collections.OrderedDict()  #將普通字典轉換為有序字典
4 d1[a‘]=A5 d1[b‘]=B6 d1[c‘]=C7 d1[d‘]=D8 for k,v in d1.items():
9     print k,v
技術分享圖片

輸出結果為:

1 a A
2 b B
3 c C
4 d D

對比兩種輸出結果,不難發現,有序字典可以按字典中元素的插入順序來輸出

上面兩個例子之所以字典中插入元素,而不是一開始就將字典中的元素定義好,是因為有序字典的作用只是記住元素插入順序並按順序輸出。

如果有序字典中的元素一開始就定義好了,後面沒有插入元素這一動作,那麽遍歷有序字典,其輸出結果為空,因為缺少了有序插入這一條件,所以此時有序字典就失去了作用,所以有序字典一般用於動態添加並需要按添加順序輸出的時候

舉例說明:

1 import collections
2 d2 = {a‘:A‘,b‘:B‘,c‘:C‘,d‘:D}
3 d2=collections.OrderedDict()  #將普通字典轉換為有序字典
4 for k,v in d2.items():
5     print k,v

其輸出結果為空。

python有序字典