python中OrderedDict的使用

2022-04-05 01:55:58 字數 2298 閱讀 3427

很多人認為python中的字典是無序的,因為它是按照hash來儲存的,但是python中有個模組collections(英文,收集、集合),裡面自帶了乙個子類

ordereddict,實現了對字典物件中元素的排序。請看下面的例項:

1

import

collections

2print

"regular dictionary

"3 d={}

4 d['

a']='a'

5 d['

b']='b'

6 d['

c']='c'

7for k,v in

d.items():

8print

k,v9

10print

"\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'

17for k,v in

d1.items():

18print

k,v19

20輸出:

21regular dictionary

22a a

23c c

24b b

2526

order dictionary

27a a

28b b

29c 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'

67 d3={}

8 d3['

c']='c'

9 d3['

a']='a'

10 d3['

b']='b'

1112

print d2 ==d3

1314

print

'\nordereddict:

'15 d4=collections.ordereddict()

16 d4['

a']='a'

17 d4['

b']='b'

18 d4['

c']='c'

1920 d5=collections.ordereddict()

21 d5['

c']='c'

22 d5['

a']='a'

23 d5['

b']='b'

2425

print d1==d2

2627

輸出:28

regular dictionary:

29true

3031

ordereddict:

32 false

再看幾個例子:

dd = 

#按key排序

kd = collections.ordereddict(sorted(dd.items(), key=lambda

t: t[0]))

printkd#

按照value排序

vd = collections.ordereddict(sorted(dd.items(),key=lambda t:t[1]))

printvd#

輸出ordereddict([('

', 4), ('

banana

', 3), ('

orange

', 2), ('

pear

', 1)])

ordereddict([(

'pear

', 1), ('

orange

', 2), ('

banana

', 3), ('

', 4)])

python中的有序字典OrderedDict

1.ordereddict 有序字典 ordereddict是dict的子類,它記住了內容新增的順序。比較時,ordereddict要內容和順序完全相同才會視為相等。python view plain copy import collections d collections.ordereddict...

python中 python中的 與

這一部分首先要理解python記憶體機制,python中萬物皆物件。對於不可變物件,改變了原來的值,其別名 變數名 繫結到了新值上面,id肯定會改變 對於可變物件,操作改變了值,id肯定會變,而 是本地操作,其值原地修改 對於 號操作,可變物件和不可變物件呼叫的都是 add 操作 對於 號操作,可變...

python中否定for 在python中否定函式

有沒有一種方法可以否定乙個函式,使它返回負數。在我的函式中,我有條件句,每個條件句都讓這個 烏龜 移動。有沒有一種方法可以否定這一點,所以烏龜的每乙個動作都是否定的。我說的是 狀況 在def ttinterpret program interpret program as a tinyturtle ...