Python實驗隨手小筆記(三)

2021-08-30 06:40:56 字數 1795 閱讀 9265

很多人認為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 把可能...