免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2680 | 回复: 0
打印 上一主题 下一主题

Python: sorted [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-06-01 17:37 |只看该作者 |倒序浏览

Python: sorted

sorted 是 python的内置函数,可以用来对列表和字典进行排序。

以下是两个例子:
1、对列表排序
   >>> elist = [1,5,3,7]
   >>> sorted(elist)
   [1, 3, 5, 7]

2、对字典排序
   >>> edict = {"ok":1,"no":2}
>>> sorted(edict.items(),key=lambda d: d[0])
[('no', 2), ('ok', 1)]

在python中,sorted定义如下:
sorted(
iterable[, cmp[, key[, reverse]]])
iterable:是可迭代类型类型;
cmp:用于比较的函数,比较什么由key决定,有默认值,迭代集合中的一项;
key:用列表元素的某个属性和函数进行作为关键字,有默认值,迭代集合中的一项;
reverse:排序规则. reverse = True 或者 reverse = False,有默认值。
返回值:是一个经过排序的可迭代类型,与iterable一样。

一般来说,cmp和key可以使用lambda表达式。

下面对例子2进行解析。
edict.items() 对字典项进行排序
key=lambda d: d[0] 用字典的key进行排序。注意,d代表了字典集合中的一项。d[0]即是字典项的key.
结果大家都看到了。但是如果,将这个表达式改为key = lambda d:d[1]呢?

3、下面是一个结构的例子
>>> class test:
         def __init__(self,a,b):
              self.a = a
              self.b = b

>>> test1 = test(5,25)
>>> test2 = test(10,15)
>>> tests = [test1,test2]
>>> sorted(tests,cmp = lambda x,y: cmp(x.a, y.a)) 
>>> result = sorted(tests,key = lambda d:d.a)

有兴趣的话,大家可以将结果打印出来看看。lambda真是一个十分有趣的东西,有时间研究一下。

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/8059/showart_1951662.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP