首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有办法对元组列表进行排序?

问有没有办法对元组列表进行排序?
EN

Stack Overflow用户
提问于 2019-12-04 03:09:09
回答 1查看 42关注 0票数 0

我想要排序,比方说,这个列表:

[('alpha', 2), ('delta', 3), ('charlie', 3), ('tango', 1), ('foxtrot', 1), ('echo', 2)]

结果应该是

[('charlie', 3), ('delta', 3), ('alpha', 2), ('echo', 2), ('foxtrot', 1), ('tango', 1)]

charlie是第一个,因为它有最大的数字,并且它在delta值之前,因为按字母顺序c在d之前(所以如果数字相同,它会按字母顺序对那些特定的数字进行排序)。alpha在echo之前,因为即使它们有相同的数字,字母顺序也在e. echo在foxtrot之前,因为echo有更大的数字,foxtrot在探戈之前,尽管他们有相同的数字,因为f在t之前。

目前,我的方法涉及到for循环(查看每个元素)中的while循环(将项目移动到正确的位置),然后是另一个循环,如果数字相同,则执行相同的操作,以便按字母顺序排序。

有没有更好的方法呢?

EN

回答 1

Stack Overflow用户

发布于 2019-12-04 03:11:06

您可以编写自己的key来传递给sorted。在这种情况下,首先按[1]索引排序,但取消它,这样就可以得到降序。然后按名称的字母升序排序,即索引[0]。

代码语言:javascript
复制
>>> sorted(values, key=lambda i: (-i[1], i[0]))
[('charlie', 3), ('delta', 3), ('alpha', 2), ('echo', 2), ('foxtrot', 1), ('tango', 1)]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59163820

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档