Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1394422
  • 博文数量: 343
  • 博客积分: 13098
  • 博客等级: 上将
  • 技术积分: 2862
  • 用 户 组: 普通用户
  • 注册时间: 2005-07-06 00:35
文章存档

2012年(131)

2011年(31)

2010年(53)

2009年(23)

2008年(62)

2007年(2)

2006年(36)

2005年(5)

分类: Python/Ruby

2009-06-01 17:37:08

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真是一个十分有趣的东西,有时间研究一下。
阅读(1110) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~