首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何以完全相同的方式对两个列表(相互引用)进行排序

如何以完全相同的方式对两个列表(相互引用)进行排序
EN

Stack Overflow用户
提问于 2012-03-19 10:35:10
回答 14查看 160.2K关注 0票数 182

假设我有两个列表:

代码语言:javascript
运行
复制
list1 = [3, 2, 4, 1, 1]
list2 = ['three', 'two', 'four', 'one', 'one2']

如果我运行list1.sort(),它会将它排序到[1,1,2,3,4],但是有没有办法让list2也同步(所以我可以说item 4属于'three')?因此,预期输出将是:

代码语言:javascript
运行
复制
list1 = [1, 1, 2, 3, 4]
list2 = ['one', 'one2', 'two', 'three', 'four']

我的问题是,我有一个非常复杂的程序,可以很好地处理列表,但我需要开始引用一些数据。我知道这对字典来说是一个完美的情况,但我正在努力避免在处理过程中使用字典,因为我确实需要对键值进行排序(如果我必须使用字典,我知道如何使用它们)。

基本上,这个程序的本质是,数据以随机的顺序出现(就像上面的),我需要对它进行排序,处理它,然后发送结果(顺序并不重要,但用户需要知道哪个结果属于哪个键)。我想过先把它放在字典里,然后再对列表进行排序,但如果不能保持顺序,我将无法区分具有相同值的条目(这可能会影响向用户传达结果)。因此,理想情况下,一旦我得到列表,我宁愿找出一种方法将这两个列表排序在一起。这个是可能的吗?

EN

Stack Overflow用户

发布于 2019-01-14 06:17:12

算法解决方案:

代码语言:javascript
运行
复制
list1 = [3,2,4,1, 1]
list2 = ['three', 'two', 'four', 'one', 'one2']


lis = [(list1[i], list2[i]) for i in range(len(list1))]
list1.sort()
list2 = [x[1] for i in range(len(list1)) for x in lis if x[0] == i]

输出: -> 输出速度: 0.2s

代码语言:javascript
运行
复制
>>>list1
>>>[1, 1, 2, 3, 4]
>>>list2
>>>['one', 'one2', 'two', 'three', 'four']
票数 0
EN
查看全部 14 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9764298

复制
相关文章

相似问题

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