【python】詳解collections模組中OrderedDict的使用
阿新 • • 發佈:2018-11-19
很多人認為python中的字典是無序的,因為它是按照hash來儲存的,但是python中有個模組collections(英文,收集、集合),裡面自帶了一個子類OrderedDict,實現了對字典物件中元素的排序。
import collections print("Regular dictionary") d={} d['a']='A' d['b']='B' d['c']='C' d['1'] = '1' for k,v in d.items(): print (k,v) print("\nOrder dictionary") d1 = collections.OrderedDict() d1['a'] = 'A' d1['c'] = 'C' d1['1'] = '1' d1['b'] = 'B' d1['2'] = '2' for k,v in d1.items(): print(k,v) #------------------------------ Regular dictionary a A c C b B 1 1 Order dictionary a A c C 1 1 b B 2 2
可以看到,同樣是儲存了ABC等幾個元素,但是使用OrderedDict會根據放入元素的先後順序進行排序。所以輸出的值是排好序的。
- 接下來可以通過改變傳入的順序來判斷是否是同一個dict:
d2={} d2['a']='A' d2['b']='B' d2['c']='C' d3={} d3['c']='C' d3['a']='A' d3['b']='B' print(d2 == d3) print('\nOrderedDict:') d4=collections.OrderedDict() d4['a']='A' d4['b']='B' d4['c']='C' d5=collections.OrderedDict() d5['c']='C' d5['a']='A' d5['b']='B' print(d4==d5) #------------------------------ Regular dictionary True OrderedDict: False
從結果可以看出,如果是普通的字典,即使傳入的順序不一樣,但是依然是相同的字典;
如果是orderedDict,傳入的順序不一樣,那麼得到的字典是不一樣的。