python列表,字典排序

一,lambda运算符介绍

使用python lambda语句可以创建表达式形式的匿名函数,首要用途指定短小的回调函数。使用lambda语句定义的代码必须是合法的表达式,在语句中不能出现多条语句和其他非表达式语句,如for和while等。lambda表达式遵循与函数相同的作用域规则。

使用方法:

lambda args:expression

args是以逗号分隔的参数列表,而expression是用到这些参数的表达式,例:

a = lambda x,y : x+y

r = a(2,3)

r的值为5

 

二,列表排序

1,使用sort函数

sort函数紧用于对list对象在原位置进行排序,即直接改变原来的列表,从而让其中的元素能按一定的顺序排列,而不是返回一个已排好序的列表副本。

函数原型为:

L.sort(cmp=None, key=None, reverse=False)

sort函数提供2个可选参数:cmp,key,reverse。

cmp:可以自定义一个函数,使按照特定的方式进行排序,这个函数直接对元素进行比较。例如cpm(x,y)这种形式

key:用列表元素的某个属性和函数进行作为关键字,函数并不是像cpm指定的函数直接来确定大小,而是为每个元素创建一个键,然后所有元素根据这个键值来排序。

reverse:指定是升序还是降序排列。默认是升序排列

1)简单按数值大小排序

In [64]: a = [1,3,5,2]
In [65]: a.sort()
In [66]: print a
[1, 2, 3, 5]

如上所示,默认为从小到大排序。我们也可以从大大小,逆序配列:

In [68]: a = [1,3,5,2]
In [69]: a.sort(reverse=True)
In [70]: print a
[5, 3, 2, 1]

 

2)指定关键参数排序

使用len函数作为键函数,按元素的长度排序:

In [73]: a=['abc','cba','bb','fffff']
In [74]: a.sort(key=len)
In [75]: print a
['bb', 'abc', 'cba', 'fffff']

把元素转化为小写,然后排序(根据字母对应的标准ASCII码的十进制值排序):

In [100]: a=['abc','cba','bb','fffff','Aaa','Csdf','Bsdf']
In [101]: a.sort(key=str.lower)
In [102]: print a
['Aaa', 'abc', 'bb', 'Bsdf', 'cba', 'Csdf', 'fffff']

按元素大小进行排序:

In [127]: a = [1,3,5,2,6]

In [128]: a.sort(cmp=lambda x,y:cmp(x,y))

In [129]: print a

[1, 2, 3, 5, 6]

In [130]: a = [1,3,5,2,6]

In [131]: a.sort(key=lambda x:x)

In [132]: print a

[1, 2, 3, 5, 6]

 

2,使用sorted函数

In [12]: a=[('a','2014-10-13'),('b','2014-10-10'),('c','2014-10-12')]

按照列表中元祖的第二个元素排序

In [13]: sorted(a,key=lambda a:a[1], reverse=True)

Out[13]: [('a', '2014-10-13'), ('c', '2014-10-12'), ('b', '2014-10-10')]

 

三,字典排序

先把无序的字典转化为列表,然后抽取列表中元素集合的对应值进行排序。

函数原型:

sorted(iterable, cmp=None, key=None, reverse=False)

iterable:指定一个迭代的对象,列表,集合等

其它三个参数和sort类似。

按照字典的value排序:(列表中的元素是集合,把集合中的第1个或者第2个元素作为key,即键值)

In [142]: tmp = {'a': 8, 'b': 1, 'c': 3,'d':12}

In [143]: sorted(tmp.items(),key=lambda x:x[1],reverse=True)

Out[143]: [('d', 12), ('a', 8), ('c', 3), ('b', 1)]

安装字典的key进行排序:

In [145]: tmp = {'a': 8, 'b': 1, 'c': 3,'d':12}

In [146]: sorted(tmp.items(),key=lambda x:x[0],reverse=True)

Out[146]: [('d', 12), ('c', 3), ('b', 1), ('a', 8)]

转载于:https://my.oschina.net/u/3866294/blog/1824139

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值