Python: sorted

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真是一个十分有趣的东西,有时间研究一下。