python有序字典
阿新 • • 發佈:2019-02-12
轉換 https style 沒有 order 順序輸出 兩種 有序字典 發現
https://www.cnblogs.com/tianyiliang/p/8260741.html
最近的django開發中用到了有序字典,所以研究了一下,以下。
示例:
有序字典和通常字典類似,只是它可以記錄元素插入其中的順序,而一般字典是會以任意的順序叠代的。
普通字典:
1 d1={}
2 d1[‘a‘]=‘A‘
3 d1[‘b‘]=‘B‘
4 d1[‘c‘]=‘C‘
5 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‘]=‘A‘
5 d1[‘b‘]=‘B‘
6 d1[‘c‘]=‘C‘
7 d1[‘d‘]=‘D‘
8 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有序字典