很多人認為python中的字典是無序的,因為它是按照hash來儲存的,但是python中有個模組collections(英文,收集、集合),裡面自帶了乙個子類ordereddict
,實現了對字典物件中元素的排序。請看下面的例項:
import collections
print "regular dictionary"
d={}
d['a']='a'
d['b']='b'
d['c']='c'
for k,v in d.items():
print k,v
print "\norder dictionary"
d1 = collections.ordereddict()
d1['a'] = 'a'
d1['b'] = 'b'
d1['c'] = 'c'
d1['1'] = '1'
d1['2'] = '2'
for k,v in d1.items():
print k,v
輸出:regular dictionary
a ac c
b border dictionary
a ab b
c c1 1
2 2
可以看到,同樣是儲存了abc等幾個元素,但是使用ordereddict會根據放入元素的先後順序進行排序。所以輸出的值是排好序的,ordereddict
物件的字典物件,如果其順序不同那麼python也會把他們當做是兩個不同的物件,請看事例:
print 'regular dictionary:'
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 d1==d2
輸出:regular dictionary:
true
ordereddict:
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記憶體機制,python中萬物皆物件。對於不可變物件,改變了原來的值,其別名 變數名 繫結到了新值上面,id肯定會改變 對於可變物件,操作改變了值,id肯定會變,而 是本地操作,其值原地修改 對於 號操作,可變物件和不可變物件呼叫的都是 add 操作 對於 號操作,可變...
python中的物件 Python中的變數 物件
由於沒時間系統學習下python 只能見乙個問題 乙個問題了 一 初級 物件 關於python中的資料型別,今天重新認識了下。參考 首先,python中,物件才有型別,變數是沒有型別的,它只是物件的 引用 其次,python中物件被分為兩類 可更改物件和不可更改物件 包括numbers,string...
python中的引數傳遞 python中的引數傳遞
begin 前面在介紹python的六大資料型別的時候提到根據資料可變和不可變進行的資料型別分類 python3 的六個標準資料型別中 不可變資料 3 個 number 數字 string 字串 tuple 元組 可變資料 3 個 list 列表 dictionary 字典 set 集合 pytho...