用相应的行对Python列排序

2024-10-02 14:25:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我想根据充满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?


Tags: to字符串newby排序整数sortarray
2条回答
sorted_data=[ sorted(i) for i in data ]
# [[0, 1, 2, 3], ['avocado', 'olives', 'patato', 'tomatoes']]

这样就行了。简单的列表理解。!你知道吗

zip排序-解压过程应该做到以下几点:

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']]

在Python3.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)))))

相关问题 更多 >