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排序_Python_Sorting - Fatal编程技术网

基于并行数组的python排序

基于并行数组的python排序,python,sorting,Python,Sorting,我有一个对象列表,我想根据并行数组对它们进行排序。因此,当我在数据列表上操作时,我构造了一个并行数组(该列表中的每个条目对应于原始列表中的一个条目)。然后(假设并行数组中填充了数字) 我希望根据并行数组的值对对象的原始列表进行排序,以便原始列表按另一个数组中的数值升序排序。有什么方法可以内置到python中实现这一点吗 sort_a_by_b(list_a, list_b) 预期结果将是: list_a_sorted_by_b = (8, 4, 1, 6, 0, 2, 3, 5, 9, 7 )

我有一个对象列表,我想根据并行数组对它们进行排序。因此,当我在数据列表上操作时,我构造了一个并行数组(该列表中的每个条目对应于原始列表中的一个条目)。然后(假设并行数组中填充了数字)

我希望根据并行数组的值对对象的原始列表进行排序,以便原始列表按另一个数组中的数值升序排序。有什么方法可以内置到python中实现这一点吗

sort_a_by_b(list_a, list_b)
预期结果将是:

list_a_sorted_by_b = (8, 4, 1, 6, 0, 2, 3, 5, 9, 7 )

调用对象列表
对象
和其他列表
排序键
。如果您可以仅从
对象[i]
的值计算
排序键[i]
,您甚至不需要构建
排序键。你应该这样做:

objects.sort(key=compute_sort_key_for_object)
其中,
compute\u sort\u key\u for_object
是用于从
objects[i]
计算
sort\u key[i]
的函数。它更快,可读性更强

如果计算
排序键的过程更复杂,您需要Rohit的答案:

import operator
[k for k, v in sorted(zip(objects, sort_keys), key=operator.itemgetter(1))]

顺便说一句,你有的是元组,不是列表或数组。谢谢你的帮助。
objects.sort(key=compute_sort_key_for_object)
import operator
[k for k, v in sorted(zip(objects, sort_keys), key=operator.itemgetter(1))]