假设有一个列表a [i]存储索引值v,v是另一个列表b [v]的索引值。我想根据列表b的值来排序列表a。 例如 a = [0,2,3,1] b = [7,10,8,6] 我希望列表变为a = [1,2,0,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索引的顺序获取列表的值