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