OrderedDict
很多人認(rèn)為python中的字典是無序的,因?yàn)樗前凑説ash來存儲(chǔ)的,但是python中有個(gè)模塊collections(英文,收集、集合),里面自帶了一個(gè)子類OrderedDict,實(shí)現(xiàn)了對(duì)字典對(duì)象中元素的排序。請(qǐng)看下面的實(shí)例:
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 A
c C
b B
Order dictionary
a A
b B
c C
1 1
2 2
Sorted
sort 與 sorted 區(qū)別:
sort 是應(yīng)用在 list 上的方法,sorted 可以對(duì)所有可迭代的對(duì)象進(jìn)行排序操作。
list 的 sort 方法返回的是對(duì)已經(jīng)存在的列表進(jìn)行操作,無返回值,而內(nèi)建函數(shù) sorted 方法返回的是一個(gè)新的 list,而不是在原來的基礎(chǔ)上進(jìn)行的操作。
sorted(iterable, cmp=None, key=None, reverse=False)
a = [5,7,6,3,4,1,2]
b = sorted(a) # 保留原列表
a
[5, 7, 6, 3, 4, 1, 2]
>>> b
[1, 2, 3, 4, 5, 6, 7]
L=[('b',2),('a',1),('c',3),('d',4)]
sorted(L, cmp=lambda x,y:cmp(x[1],y[1])) # 利用cmp函數(shù)
# cmp(x,y) 函數(shù)用于比較2個(gè)對(duì)象,如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1。
>>> [('a', 1), ('b', 2), ('c', 3), ('d', 4)]
sorted(L, key=lambda x:x[1]) # 利用key
[('a', 1), ('b', 2), ('c', 3), ('d', 4)]