python sorting based on parallel arrays
本问题已经有最佳答案,请猛点这里访问。
我有一个对象列表,我想基于一个并行数组对它们进行排序。所以,当我在一个数据列表上操作时,我构建了一个并行数组(列表中的每个条目对应于原始列表中的一个条目)。那么(假设并行数组中充满了数字)
1 2 | list_a = (0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ) list_b = (4, 2, 5, 6, 1, 7, 3, 9, 0, 8 ) |
我想根据平行数组的值对原始对象列表进行排序,以便原始列表按升序按另一个数组中的数值进行排序。有什么方法可以在python中实现这一点吗?
1 | sort_a_by_b(list_a, list_b) |
号
预期结果为:
1 | list_a_sorted_by_b = (8, 4, 1, 6, 0, 2, 3, 5, 9, 7 ) |
1 2 3 4 5 6 7 | >>> list_a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> list_b = [4, 2, 5, 6, 1, 7, 3, 9, 0, 8] >>> >>> import operator >>> >>> [k for k, v in sorted(zip(list_a, list_b), key=operator.itemgetter(1))] [8, 4, 1, 6, 0, 2, 3, 5, 9, 7] |
调用对象列表
1 | objects.sort(key=compute_sort_key_for_object) |
号
其中,
如果计算EDOCX1[1]的过程更复杂,您需要Rohit的答案:
1 2 | import operator [k for k, v in sorted(zip(objects, sort_keys), key=operator.itemgetter(1))] |