码迷,mamicode.com
首页 > 编程语言 > 详细

Python复杂多重排序

时间:2014-12-19 17:22:06      阅读:242      评论:0      收藏:0      [点我收藏+]

标签:

1. cmp函数是python自带的函数,用于比较两个参数哪个大哪个小

print  cmp(2, 3)   # -1
print  cmp(2, 1)   # 1
print  cmp(2, 2)   # 0


如果第一个参数比第二个小,就返回-1,两个元素相等,返回0,否则返回1

2.所以就可以利用这个函数来自定义自己的比较规则

def cmp_country_size(country1, country2):
    alist = [美国, 中国, 加拿大, 俄罗斯]

    return cmp(alist.index(country1), alist.index(country2))


print cmp_country_size(中国, 加拿大)

例如这里cmp_country_size函数用于比较哪个国家的面积比较大

3.python中的排序

python中用于排序的函数有sorted和sort,sort是列表的方法,它们的区别是:sort在原来的列表中进行排序,sorted是新建一个列表来进行排序,

它们的用法是一样的:

def sort(self, cmp=None, key=None, reverse=False)

cmp是排序的规则,key是按照列表元素中哪一个部分来排序,reverse是否反序

items=[{name:kevin,age:15,course:english,country:加拿大},
       {name:tom,age:15,course:chinese,country:中国}]
items.sort(cmp=lambda x,y:cmp_country_size(x[country],y[country]) or cmp(x[age],y[age]) or cmp(x[name],y[name]) )
print items

把items中的元素,先按国家来排,然后按年龄和名称来排序

Python复杂多重排序

标签:

原文地址:http://www.cnblogs.com/Xjng/p/4174132.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!