很多人認為python中的字典是無序的,因為它是按照hash來儲存的,但是python中有個模組collections(英文,收集、集合),裡面自帶了乙個子類
ordereddict,實現了對字典物件中元素的排序。請看下面的例項:
1可以看到,同樣是儲存了abc等幾個元素,但是使用ordereddict會根據放入元素的先後順序進行排序。所以輸出的值是排好序的。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
ordereddict物件的字典物件,如果其順序不同那麼python也會把他們當做是兩個不同的物件,請看事例:
1再看幾個例子:'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
'\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 ...