Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如果列表1的值是列表2的索引,如何根据列表2的值对列表1进行排序_Python_Sorting - Fatal编程技术网

Python 如果列表1的值是列表2的索引,如何根据列表2的值对列表1进行排序

Python 如果列表1的值是列表2的索引,如何根据列表2的值对列表1进行排序,python,sorting,Python,Sorting,假设有一个存储索引值v的列表a[i],v是另一个列表b[v]的索引值。我想根据列表b的值对列表a进行排序。 例如 a=[0,2,3,1]b=[7,10,8,6] 我想让列表a变成a=[1,2,0,3],有什么简单的方法对列表a进行排序吗?简单的解决方案是先对列表b进行排序,然后在排序后获取列表b的索引,最后按照对b列表进行排序后获取的b索引的顺序获取列表的值。您可以使用键转换a中的项。该键是a的每个元素的函数 [x for _,x in sorted(zip(b,a))] 试试这个: a=so

假设有一个存储索引值v的列表a[i],v是另一个列表b[v]的索引值。我想根据列表b的值对列表a进行排序。 例如 a=[0,2,3,1]b=[7,10,8,6]
我想让列表a变成a=[1,2,0,3],有什么简单的方法对列表a进行排序吗?

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

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

[x for _,x in sorted(zip(b,a))]
试试这个:

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

请注意,如果
a
中的任何值超出
b
的范围,这将失败并引发
索引器:列表索引超出范围

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


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

您希望
a
成为
[1,0,3,2]