如果列表1的值是列表2的索引,我如何根据列表2值

时间:2017-10-26 02:53:10

标签: python sorting

假设有一个列表a [i]存储索引值v,v是另一个列表b [v]的索引值。我想根据列表b的值来排序列表a。 例如 a = [0,2,3,1] b = [7,10,8,6] 我希望列表变为a = [1,2,0,3],是否有一些简洁的方法来排序列表?

3 个答案:

答案 0 :(得分:0)

[x for _,x in sorted(zip(b,a))]

答案 1 :(得分:0)

您可以使用键转换项目。该键是a。的每个元素的函数。

试试这个:

a = sorted(a, key=lambda i: b[i])

请注意,如果a中的任何值超出b的范围,则会失败并引发IndexError: list index out of range

但是,根据您的描述,您希望列表按相反顺序排序,因此:

a = sorted(a, key=lambda i: b[i], reverse=True)

答案 2 :(得分:-1)

简单解决方案是首先对列表b进行排序,然后在排序后获取列表b的索引,最后按排序b列表后的b索引的顺序获取列表的值