对于序列类型的排序一般用到三种方法reverse(), sort(), sorted()
下面分别介绍这几种方法:
- reverse()
用于将序列中元素反转倒序,直接改变list或String
li = [x for x in 'string']
li.reverse()
print li
#['g', 'n', 'i', 'r', 't', 's']
- sort()
用于list排序,从小到大,若要求从大到小可在调用一次reverse(),直接改变list
li = [x for x in 'string']
li.sort()
print li
#['g', 'i', 'n', 'r', 's', 't']
sorted()
不仅能用于list,还能用于dict排序。返回排序后的list
sorted(iterable, cmp=None, key=None, reverse=False)把iterable中的items进行排序之后,返回一个新的列表,原来的iterable没有任何改变
1) iterable:所有的序列类型
2) cmp: 指定一个定制的比较函数 def cmp(a,b) return a-b
3)key:指定一个接收一个参数的比较函数,与cmp功能相同
4)reverse:是一个布尔值。如果设置为True,列表元素将被降序排列,默认为升序排列。
一般使用key,用系统lambda作比较函数
adict = {'name':1,'aex':0,'goal':13,'jar':20}
'''按字典value值排序'''
ls = sorted(adict.items(),key = lambda x:x[1],reverse=True)
print ls
#[('jar', 20), ('goal', 13), ('name', 1), ('aex', 0)]
'''按字典的key值排序'''
ls = sorted(adict.items(),key = lambda x:x[0],reverse=True)
print ls
#[('name', 1), ('jar', 20), ('goal', 13), ('aex', 0)]
其中x表示列表中的元素,x[0]即第一个元素key,x[1]即第二个元素value.(adict.items() : [(‘aex’, 0), (‘jar’, 20), (‘name’, 1), (‘goal’, 13)])
当然对key排序还可以dict.keys()拿到列表排序,在通过.get(key)来对应顺序。但对value值排序只有这一种。