有序字典和通常字典類似,只是它可以記錄元素插入其中的順序,而一般字典是會以任意的順序迭代的。參見下面的例子:
import collections
print 'regular dictionary:'
d = {}
d['a'] = 'a'
d['b'] = 'b'
d['c'] = 'c'
d['d'] = 'd'
d['e'] = 'e'
for k, v in d.items():
print k, v
print '\nordereddict:'
d = collections.ordereddict()
d['a'] = 'a'
d['b'] = 'b'
d['c'] = 'c'
d['d'] = 'd'
d['e'] = 'e'
for k, v in d.items():
print k, v
執行結果如下:
-> python test7.py
regular dictionary:
a ac c
b be e
d dordereddict:
a ab b
c cd d
e e
可以看到通常字典不是以插入順序遍歷的。
判斷兩個有序字段是否相等(==)需要考慮元素插入的順序是否相等
import collections
print 'dict :',
d1 = {}
d1['a'] = 'a'
d1['b'] = 'b'
d1['c'] = 'c'
d1['d'] = 'd'
d1['e'] = 'e'
d2 = {}
d2['e'] = 'e'
d2['d'] = 'd'
d2['c'] = 'c'
d2['b'] = 'b'
d2['a'] = 'a'
print d1 == d2
print 'ordereddict:',
d1 = collections.ordereddict()
d1['a'] = 'a'
d1['b'] = 'b'
d1['c'] = 'c'
d1['d'] = 'd'
d1['e'] = 'e'
d2 = collections.ordereddict()
d2['e'] = 'e'
d2['d'] = 'd'
d2['c'] = 'c'
d2['b'] = 'b'
d2['a'] = 'a'
print d1 == d2
執行結果如下:
-> python test7.py
dict : true
ordereddict: false
而當判斷乙個有序字典和其它普通字典是否相等只需判斷內容是否相等。
ordereddict
的構造器或者update()
方法雖然接受關鍵字引數,但因為python的函式呼叫會使用無序的字典來傳遞引數,所以關鍵字引數的順序會丟失,所以創造出來的有序字典不能保證其順序。
Python有序字典
最近的django開發中用到了有序字典,所以研究了一下,以下。示例 有序字典和通常字典類似,只是它可以記錄元素插入其中的順序,而一般字典是會以任意的順序迭代的。普通字典 1 d1 2 d1 a a 3 d1 b b 4 d1 c c 5 d1 d d 此時的d1 6 for k,v in d1.it...
python有序字典
最近的django開發中用到了有序字典,所以研究了一下,以下。示例 有序字典和通常字典類似,只是它可以記錄元素插入其中的順序,而一般字典是會以任意的順序迭代的。普通字典 1 d1 2 d1 a a 3 d1 b b 4 d1 c c 5 d1 d d 此時的d1 6 for k,v in d1.it...
python有序字典
最近的django開發中用到了有序字典,所以研究了一下,以下。示例 有序字典和通常字典類似,只是它可以記錄元素插入其中的順序,而一般字典是會以任意的順序迭代的。普通字典 由上面的結果可以看出對普通字典進行遍歷,輸出結果是無序的。下面是有序字典 需要匯入collections包 對比兩種輸出結果,不難...