很多人認為python中的字典是無序的,因為它是按照hash來儲存的,但是python中有個模組collections(英文,收集、集合),裡面自帶了乙個子類
ordereddict,實現了對字典物件中元素的排序。請看下面的例項:
1 import collections
2 print "regular dictionary"
3 d={}
4 d['a']='a'
5 d['b']='b'
6 d['c']='c'
7 for k,v in d.items():
8 print k,v
9 10 print "\norder dictionary"
11 d1 = collections.ordereddict()
12 d1['a'] = 'a'
13 d1['b'] = 'b'
14 d1['c'] = 'c'
15 d1['1'] = '1'
16 d1['2'] = '2'
17 for k,v in d1.items():
18 print k,v
19 20 輸出:
21 regular dictionary
22 a a
23 c c
24 b b
25 26 order dictionary
27 a a
28 b b
29 c c
30 1 1
31 2 2
可以看到,同樣是儲存了abc等幾個元素,但是使用ordereddict會根據放入元素的先後順序進行排序。所以輸出的值是排好序的。
ordereddict物件的字典物件,如果其順序不同那麼python也會把他們當做是兩個不同的物件,請看事例:
1 print 'regular dictionary:'
2 d2={}
3 d2['a']='a'
4 d2['b']='b'
5 d2['c']='c'
6 7 d3={}
8 d3['c']='c'
9 d3['a']='a'
10 d3['b']='b'
11 12 print d2 == d3
13 14 print '\nordereddict:'
15 d4=collections.ordereddict()
16 d4['a']='a'
17 d4['b']='b'
18 d4['c']='c'
19 20 d5=collections.ordereddict()
21 d5['c']='c'
22 d5['a']='a'
23 d5['b']='b'
24 25 print d1==d2
26 27 輸出:
28 regular dictionary:
29 true
30 31 ordereddict:
32 false
再看幾個例子:
#按key排序
kd = collections.ordereddict(sorted(dd.items(), key=lambda t: t[0]))
print kd
#按照value排序
vd = collections.ordereddict(sorted(dd.items(),key=lambda t:t[1]))
print vd
#輸出
python實驗三 Python實驗三
python 程式設計實驗報告 班級 物流191 姓名 張曼曼 學號 3190505121 成績 日期 2020.4.8 指導教師 修宇 實驗三 分支結構程式設計 設計性實驗 實驗目的 1 學會正確使用比較運算子與比較表示式 邏輯運算子和邏輯表示式 2 熟練用if語句設計選擇結構程式 實驗條件 pc...
Python隨手筆記 二)
本文目錄 2.1 布林值 2.2 比較操作符 2.3 布林操作符 2.4 控制流的元素 2.5 控制流語句雖然整型 浮點型和字串資料型別有無數種可能的值,但 布林 資料型別 只有兩種值 true 和 false。在作為 python 輸入時,布林值 true 和 false 不像字串,兩邊沒有引號,...
Python隨手筆記 十 2
每個程式能一次寫完並正常執行的概率基本不超過1 因為總會有各種各樣的bug需要修正。有的bug很簡單,看看錯誤資訊就知道,有的bug很複雜,我們需要知道出錯時,哪些變數的值是正確的,哪些變數的值是錯誤的,因此,需要一整套除錯程式的手段來修復bug。第一種方法簡單直接粗暴有效,就是用print 把可能...