最近的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
其輸出結果為空。
