我正在使用类似于下面示例的2D列表,我正在尝试重新排序列:
D C B A
1 3 2 0
1 3 2 0
1 3 2 0
列表的第一行保留用于引用每列的字母。 如何对此列表进行排序,以便按字母顺序放置这些列以实现以下目的:
D C B A A B C D
1 3 2 0 0 2 3 1
1 3 2 0 0 2 3 1
1 3 2 0 0 2 3 1
我找到了使用lambdas进行排序的示例,但没有找到任何类似的按字符对列进行排序的示例。
我不确定如何实现这种排序,并且非常感谢一些帮助。
答案 0 :(得分:1)
zip()
2D list
,按第一项排序,再按zip()
排序。
>>> table = [['D', 'C', 'B', 'A',],
... [1, 3, 2, 0,],
... [1, 3, 2, 0],
... [1, 3, 2, 0]]
>>> for row in zip(*sorted(zip(*table), key=lambda x: x[0])):
... print(*row)
...
A B C D
0 2 3 1
0 2 3 1
0 2 3 1
答案 1 :(得分:0)
假设在列表中逐行存储的值,如:
zip(*sorted(zip(*a), key=lambda column: column[0]))
要对此数组进行排序,您可以使用以下代码:
[('A', 'B', 'C', 'D'),
('0', '2', '3', '1'),
('0', '2', '3', '1')]
其中列[0] - 要排序的值(您可以使用列1等)。
输出:
NSTask
<强> 注意 强>: 如果您正在使用相当大的数组并且执行时间很重要,请考虑使用numpy,它有适当的方法:NumPy sort