Python中实现多属性排序


我们有一组记录:

list_records = [
 (department, name, salary),
 (department, name, salary),
 '''...'''
 (department, name, salary)
]


然后我们想进行类似 MS – Excel 里的 “then sort by” 中的功能一样先基于department排序,然后再在部门内按照salary排序。

其他编程语言可能相对复杂,我这里写出一个用Python实现的最简方法(也许有比这个还短的,来挑战吧)

list_records.sort(
 key = lambda l: (l[0], l[2])
)


这个就是函数是编程的好处,可以无中生有的构造出一个没有名字的inline函数。假设我们有另外一个dictionary_age 是保存的 { name: ages }, 我们还可以简单的实现基于外部属性进行排序。例如,如果我们想先按照部门排序,然后在部门里按照年龄排序,我们可以写:

list_record.sort(
 key = lambda l:( l[0], dictionary_age(l[1]) )
)

如果需要降序排列,可以设置 revserse = True; 如果想基于两个属性,一个升序,一个降序,可以试试将其中一个构造一个外部规则,然后如同上例子中的dictionary_age一样传递进去。

Done!


转载自http://coolshell.cn/articles/435.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值