您的位置:首页 > 编程语言 > Python开发

PYTHON中实现多属性排序

2018-03-08 22:56 246 查看
我们有一组记录:
1234567
list_records 
=
(
(department, name, salary),
(department, name, salary),
...
(department, name, salary)
)
然后我们想进行类似 MS – Excel 里的 “then sort by” 中的功能一样先基于department排序,然后再在部门内按照salary排序。其他编程语言可能相对复杂,我这里写出一个用Python实现的最简方法(也许有比这个还短的,来挑战吧)
123
list_records.sort(
key 
=
 
lambda
 
l: (l[
0
], l[
2
])
)
这个就是函数是编程的好处,可以无中生有的构造出一个没有名字的inline函数。假设我们有另外一个dictionary_age 是保存的 { name: ages }, 我们还可以简单的实现基于外部属性进行排序。例如,如果我们想先按照部门排序,然后在部门里按照年龄排序,我们可以写:
123
list_record.sort(
key 
=
 
lambda
 
l:( l[
0
], dictionary_age(l[
1
]) )
)
如果需要降序排列,可以设置 revserse = True; 如果想基于两个属性,一个升序,一个降序,可以试试将其中一个构造一个外部规则,然后如同上例子中的dictionary_age一样传递进去。Done!

插播福利

1.近期整理了20G资源,包含产品/运营/测试/程序员/市场等,互联网从业者【工作必备干货技巧、行业专业书籍、面试真题宝典等】,获取方式:
微信扫码关注公众号“非典型互联网”,转发文章到朋友圈,截图发至公众号后台,即可获取干货资源链接;

2.互联网人交流群:
关注公众号“非典型互联网”,在公众号后台回复“入群”,人脉共享,一起交流;


作者:陈皓,博客地址:https://coolshell.cn/articles/18190.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: