Python每日一练0005

发布时间:2019-06-13 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了Python每日一练0005脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

问题

如何对一个元素是列表的列表进行排序,排序规则是:首先按长度排序,其次按列表的字典序进行排序

一个例子:

list1 = [[0, 4, 1, 5], [3, 1, 5], [4, 0, 1, 5]]排序后为list1 = [[3, 1, 5], [0, 4, 1, 5], [4, 0, 1, 5]]

另一个例子:

list2 = [[4, 5, 2], [2, 5, 4], [2, 4, 5]]排序后为list2 = [[2, 4, 5], [2, 5, 4], [4, 5, 2]]

解决方案

使用对元组排序的技巧,我们可以调用sorted函数时候指定key为lambda k: (len(k), k)

>>> list1 = [[0, 4, 1, 5], [3, 1, 5], [4, 0, 1, 5]]
>>> list2 = [[4, 5, 2], [2, 5, 4], [2, 4, 5]]
>>> print(sorted(list1, key=lambda k: (len(k), k)))
[[3, 1, 5], [0, 4, 1, 5], [4, 0, 1, 5]]
>>> print(sorted(list2, key=lambda k: (len(k), k)))
[[2, 4, 5], [2, 5, 4], [4, 5, 2]]

讨论

根据Sorting HOW TO了解

This idiom works because tuples are compared lexicographically; the First items are compared; if they are the same then the second items are compared, and so on.

元组的排序是根据字典序的,也就是首先按第一个元素排序,如果第一个元素相等,再按第二个元素排序

而这里我们的lambda k: (len(k), k),第一个元素就是k的长度,第二个元素是k本身

那么也就是问题所说的首先按长度排序,其次按列表的字典序进行排序

这里只是按两个关键字排序,当按多个关键字排序时,也同样可以使用元组来简化代码

Stack Overflow

关注

欢迎关注我的微信公众号python每日一练

Python每日一练0005

脚本宝典总结

以上是脚本宝典为你收集整理的Python每日一练0005全部内容,希望文章能够帮你解决Python每日一练0005所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。