python3 list 多字段、多属性、动态多列排序

ztenv
博客专家认证
2018-05-29 09:06:30
https://blog.csdn.net/lianshaohua/article/details/80483357
...全文
1451 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
混沌鳄鱼 2018-05-29
  • 打赏
  • 举报
回复
已经拜读了,总结的基本上很全面了。 5. 根据列表中元素的多个属性进行排序: 这个可以再改进一下,lambda应该直接返回一个元组,key = lambda ele: (ele[0], ele[1]) 这样可以适用于元素类型不同的情况。 另外相比Python2,Python3取消了sort函数中的 cmp方式,只能用key方式。 所以python2用cmp方式写的函数迁移到python3中需要转换。 from functools import cmp_to_key sort(iterable, key=cmp_to_key(cmp_fun))
欢乐的小猪 2018-05-29
  • 打赏
  • 举报
回复
综上,基本总结了list.sort的使用的大部分场景,如下: 1、默认排序 2、根据类对象的单个属性进行排序,当然也可以扩展为根据类对象的多个属性进行排序 3、根据元素的固有属性进行排序,如:长度、第N个元素等。为了简单,所以借助了lambda表达式,当然也可以使用普通函数代替lambda表达式 4、动态的根据多个列进行排序,同时借助lambda和eval()函数实现 可能还有一些场景没有涉及到,不过我相信,上面的几种情况可以满足90%以上的场景了;如果在使用中有问题欢迎留言交流。
ztenv 2018-05-29
  • 打赏
  • 举报
回复
引用 2 楼 xpresslink 的回复:
已经拜读了,总结的基本上很全面了。 5. 根据列表中元素的多个属性进行排序: 这个可以再改进一下,lambda应该直接返回一个元组,key = lambda ele: (ele[0], ele[1]) 这样可以适用于元素类型不同的情况。 另外相比Python2,Python3取消了sort函数中的 cmp方式,只能用key方式。 所以python2用cmp方式写的函数迁移到python3中需要转换。 from functools import cmp_to_key sort(iterable, key=cmp_to_key(cmp_fun))
给力!谢谢!

37,716

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧