首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何按顺序对复杂列表进行排序?

如何按顺序对复杂列表进行排序?
EN

Stack Overflow用户
提问于 2020-11-16 00:25:58
回答 1查看 53关注 0票数 0

假设我有一个列表:

代码语言:javascript
复制
list1 = [
         ['AC', '1'], ['AF', '0.167'], ['AN', '6'],['CAD', '2.741'], ['Bas', '-2.542'], 
         ['CAD', '1.718'], ['AC', '6'],['AN', '6'],['1000g', '0.9998']
        ]

在这个列表中,它将子列表中第一个元素视为键(例如,AC,AF...),将第二个元素视为值(例如,1,0.167...)

一些子列表是完全相同的(例如,'AN','6'),它们中的一些具有相同的键(例如,AC)或相同的值。

我想按要求对这个列表进行排序,1.先按键排序(数字优先(1000g是第一个),然后按字母顺序,A,B,C),2.如果它们有相同的键,那么哪个先出现(例如,'CAD','2.741‘,然后是'CAD','1.718',即使值可能不是数字,它仍然需要遵循第二个要求)

我试过使用list1.sort(),但没有达到第二个要求,它总是首先返回较小的数字(值)

排序后的list1应如下所示:

代码语言:javascript
复制
list1_sorted = [
    ['1000g', '0.9998'], ['AC', '1'],  ['AC', '6'], ['AF', '0.167'], 
    ['AN', '6'],['AN', '6'],['Bas', '-2.542'], ['CAD', '2.741'],  ['CAD', '1.718']
            ]

谢谢,有什么好主意吗?如果你认为你需要更多的澄清,只需要评论。

EN

回答 1

Stack Overflow用户

发布于 2020-11-16 00:35:33

使用list.index对它们进行排序:

代码语言:javascript
复制
list1 = [
    ['AC', '1'], ['AF', '0.167'], ['AN', '6'], ['CAD', '2.741'], ['Bas', '-2.542'],
    ['CAD', '1.718'], ['AC', '6'], ['AN', '6'], ['1000g', '0.9998']
]

print(sorted(list1, key=lambda x: (x[0], list1.index(x))))

# [['1000g', '0.9998'], ['AC', '1'], ['AC', '6'], ['AF', '0.167'], ['AN', '6'], ['AN', '6'], ['Bas', '-2.542'], ['CAD', '2.741'], ['CAD', '1.718']]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64846867

复制
相关文章

相似问题

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