python排序

按“值”排序就是根据字典的值进行排序,可以使用内置的sorted()函数。

    sorted(iterable[, cmp[, key[, reverse]]])

iterable:是可迭代类型类型;

cmp:用于比较的函数,比较什么由key决定,有默认值,迭代集合中的一项;

key:用列表元素的某个属性和函数进行作为关键字,有默认值,迭代集合中的一项;

reverse:排序规则. reverse = True 或者 reverse = False,有默认值,默认为升序排列(False)。

返回值:是一个经过排序的可迭代类型,与iterable一样。一般来说,cmp和key可以使用lambda表达式。

如果对字典进行排序,常用的形式如下:sorted(dict.items(), key=lambda e:e[1], reverse=True)

 其中e表示dict.items()中的一个元素,e[1]则表示按 值排序如果把e[1]改成e[0],

那么则是按键排序,reverse=False可以省略,默认为升序排列。

说明:字典的items()函数返回的是一个列表,列表的每个元素是一个键和值组成的元组。

因此,sorted(dict.items(), key=lambda e:e[1], reverse=True)返回的值同样是由元组组成的列表。

class person:

    def __init__(self,name=None,age=None):
        self.name=name
        self.age=age
    def __str__(self):
         return '我是{0},今年{1}岁'.format(self.name,self.age)
    def __add__(self, other):
        return person(self.name+other.name,self.age+other.age)
    def __cmp__(self, other):
        return self.name
    # def __lt__(self,other):
    #     if self.name==other.name:
    #         return other.age<self.age
    #     else:
    #        return self.name.encode('gbk')<other.name.encode('gbk')

print('----------------未排序----------------')
ps=[person('asdf',10),person('阿斯蒂芬',19),]
for p1 in ps:
    print(p1)
print('--------------排序后----------------')
for p1 in sorted(ps,key=lambda a:(a.name.encode('gbk'),-a.age)):
    print(p1)
# lambda的一般形式是关键字lambda后面跟一个或多个参数,紧跟一个冒号
# ,以后是一个表达式。lambda是一个表达式而不是一个语句。
# 它能够出现在Python语法不允许def出现的地方。作为表达式,lambda返回一个值(即一个新的函数)
# lambda用来编写简单的函数,而def用来处理更强大的任务

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值