python – 按第一个元素对元素列表进行排序,但如果按第二个元素进行等级排序
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 按第一个元素对元素列表进行排序,但如果按第二个元素进行等级排序,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1367字,纯文字阅读大概需要2分钟。
内容图文
![python – 按第一个元素对元素列表进行排序,但如果按第二个元素进行等级排序](/upload/InfoBanner/zyjiaocheng/756/11d3f144f6174eb982755b5deae218e5.jpg)
我已经构建了一个列表[[13,“b”],[10,“b”],[10,“a”,],[4,“c”],[1,“d”]]通过两个元素列表中的第一个值.这是我能做的部分.我不知道的是,如果两个元素是相同的,那么我想按字母顺序对它进行排序.我用来对第一个列表进行排序的方法是通过第一个元素反转排序列表.然而,这使[10,“b”]在[10,“a”]之前出现,但我想在“b”之前“a”.有没有办法按降序编写第一个元素排序,如果是平局,按第二个元素按字母顺序排序?
解决方法:
这有效:
>>> li=[[13, "b"], [10, "b"], [10, "a",], [4,"c"], [1, "d"]]
>>> sorted(li,key=lambda sl: (-sl[0],sl[1]))
[[13, 'b'], [10, 'a'], [10, 'b'], [4, 'c'], [1, 'd']]
sorted function生成一个新列表.您还可以使用sort方法对列表进行排序:
>>> li=[[13, "b"], [10, "b"], [10, "a",], [4,"c"], [1, "d"]]
>>> li.sort(key=lambda sl: (-sl[0],sl[1]))
>>> li
[[13, 'b'], [10, 'a'], [10, 'b'], [4, 'c'], [1, 'd']]
您也可以进行嵌套排序(或对一个键进行排序,然后对第二个键进行排序),因为python使用的是stable sort:
>>> from operator import itemgetter
>>> li=[[13, "b"], [10, "b"], [10, "a",], [4,"c"], [1, "d"]]
>>> li.sort(key=itemgetter(1))
>>> li
[[10, 'a'], [13, 'b'], [10, 'b'], [4, 'c'], [1, 'd']]
>>> li.sort(key=itemgetter(0),reverse=True)
>>> li
[[13, 'b'], [10, 'a'], [10, 'b'], [4, 'c'], [1, 'd']]
由于在单元素排序中不需要lambda,因此我使用了更快的operator.itemgetter和lambda.两个更快的排序是否比一个更快,我不知道…你也可以使用lambda这个方法.
有一个伟大的sort tutorial,显示了许多这些成语.
内容总结
以上是互联网集市为您收集整理的python – 按第一个元素对元素列表进行排序,但如果按第二个元素进行等级排序全部内容,希望文章能够帮你解决python – 按第一个元素对元素列表进行排序,但如果按第二个元素进行等级排序所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。