python - 使用相应的行对 Python 列进行排序

标签 python arrays list sorting

我想根据充满 int 的行对列值进行排序:

cart = [[1, 3, 0, 2], ['olives', 'tomatoes', 'avocado', 'patato']]

还有这个

new_cart= [[0, 1, 2, 3], ['avocado', 'olives', 'patato', 'tomatoes' ]]

换句话说,我希望字符串按它们对应的整数值排序:

我发现了这些问题,但没有一个符合我的要求:

how to sort 2d array by row in python?

How to sort multidimensional array by column?

最佳答案

一个 zip-sort-unzip 程序应该可以解决这个问题:

data = [[1, 3, 0, 2], ['olives', 'tomatoes', 'avocado', 'patato']]
sorted_data = zip(*sorted(zip(data[0], data[1])))
# [(0, 1, 2, 3), ('avocado', 'olives', 'patato', 'tomatoes')]

或者如果您想将它们保存为列表:

sorted_data = map(list, zip(*sorted(zip(data[0], data[1]))))
# [[0, 1, 2, 3], ['avocado', 'olives', 'patato', 'tomatoes']]

在 Python 3.x 上,zipmap 都返回迭代器,所以如果你想将它们“烘焙”到列表中,只需按原样“转换”它们,即:

sorted_data = list(map(list, zip(*sorted(zip(data[0], data[1])))))

注意:正如 JJoao 所建议的,您也可以在内部 zip 中使用参数扩展,而不是从列表中明确选择要zip 的字段,例如:

sorted_data = list(map(list, zip(*sorted(zip(*data)))))

关于python - 使用相应的行对 Python 列进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45254493/

相关文章:

javascript - 从字符串中取出随机字母

list - 打印列表中最大数字的长度时出现 SML 错误

Python:如何根据分隔符将列表拆分为未知数量的较小列表

html - 如何在CSS中将水平列表对齐到中心

python - 如何获取与当前时区对应的 tz_info 对象?

python - 在 python 中提取作者姓名的复杂正则表达式

java - 利息数量

python - 如何获取 Python 中内置函数的参数个数?

python - Pandas Python,根据行条件选择列

Java:一个构造函数或方法将接受数组或集合或列表或......?