Python OrderedDict的使用案例解析

2022-10-04 16:00:23 字數 1781 閱讀 6231

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

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 azdzatb

b bc c

1 12 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 zdzatb'\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

再看幾個例子:

dd =

#按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

#輸出ordereddict([('apple', 4), ('banana', 3), ('orange', 2), ('pear', 1)])

ordereddict([('pear', 1), ('orange', 2), ('banana', 3), ('apple', 4)])

本文標題: python ordereddict的使用案例解析

本文位址: /jiaoben/python/282714.html

使用案例 Linux awk命令常見使用案例

1.awk簡介 awk是乙個強大的文字分析工具,相對於grep的查詢,sed的編輯,awk在其對資料分析並生成報告時,顯得尤為強大。簡單來說awk就是把檔案逐行的讀入,以空格為預設分隔符將每行切片,切開的部分再進行各種分析處理。awk有3個不同版本 awk nawk和gawk,未作特別說明,一般指g...

wget 的使用案例

語法 wget options url list url位址格式說明 可以使用如下格式的url 例如 ftp username password host dir file 在最後一種形式中,以url編碼形式為ftp主機提供了使用者名稱和密碼 當然,也可以使 用引數提供該資訊,見後 引數說明 m 映...

scanf n c ,s 的使用案例

我們有許多同學程式都不會寫卻已經掌握了 42 種編輯器的使用,並要求裁判提供它們。然而裁判太菜了,並沒有安裝包。裁判只有兩個英文本母串表示的數,請問它們的 16 進製表示的乘積是多少。多組資料,每一組資料報含兩行,每一行表示乙個 16 進製數,每乙個英文單詞以空格分隔,每一行的最後乙個 單詞後無空格...