Python2D列表按列头排序

Python2D列表按列头排序,python,list,sorting,2d,Python,List,Sorting,2d,我有一个2d列表: ['C', 'A', 'D', 'B'], #header row ['F', 'C', 'F', 'E'], #row 1 ['F', 'E', 'F', 'F'], #row 2 ['B', 'A', 'F', 'A'], ['A', 'F', 'C', 'E'], ['F', 'F', 'E', 'E'], ['C', 'E', 'F', 'C'] 列表中的第一行是标题行:C、A、D、B。 如何更改此选项,使列按顺序排列,以便显示: ['A', 'B', 'C', '

我有一个2d列表:

['C', 'A', 'D', 'B'], #header row
['F', 'C', 'F', 'E'], #row 1
['F', 'E', 'F', 'F'], #row 2
['B', 'A', 'F', 'A'],
['A', 'F', 'C', 'E'],
['F', 'F', 'E', 'E'],
['C', 'E', 'F', 'C']
列表中的第一行是标题行:C、A、D、B。 如何更改此选项,使列按顺序排列,以便显示:

['A', 'B', 'C', 'D'], #header row
['C', 'E', 'F', 'F'], #row 1
['E', 'F', 'F', 'F'], #row 2
['A', 'A', 'B', 'F'], 
['F', 'E', 'A', 'C'],
['F', 'E', 'F', 'E'],
['E', 'C', 'C', 'F']

我希望标题的顺序是A、B、C、D,但也可以将标题下的列移动到您可以使用
排序的
zip
,首先使用
zip(*A)
创建列列表,然后使用
排序的
对其排序(基于第一个索引),然后再次使用
zip
转换为第一个状态,并使用
map
将索引转换为列表:

>>> map(list,zip(*sorted(zip(*a))))
[['A', 'B', 'C', 'D'],
 ['C', 'E', 'F', 'F'],
 ['E', 'F', 'F', 'F'], 
 ['A', 'A', 'B', 'F'], 
 ['F', 'E', 'A', 'C'], 
 ['F', 'E', 'F', 'E'], 
 ['E', 'C', 'C', 'F']]
你可以用numpy

>>> import numpy as np
>>> data = np.array([['C', 'A', 'D', 'B'], #header row
... ['F', 'C', 'F', 'E'], #row 1
... ['F', 'E', 'F', 'F'], #row 2
... ['B', 'A', 'F', 'A'],
... ['A', 'F', 'C', 'E'],
... ['F', 'F', 'E', 'E'],
... ['C', 'E', 'F', 'C']])
>>> data[:,np.argsort(data[0])]  # select sorted indices of first row as column indices.
array([['A', 'B', 'C', 'D'],
       ['C', 'E', 'F', 'F'],
       ['E', 'F', 'F', 'F'],
       ['A', 'A', 'B', 'F'],
       ['F', 'E', 'A', 'C'],
       ['F', 'E', 'F', 'E'],
       ['E', 'C', 'C', 'F']], 
      dtype='|S1')

使用
zip
转换数据,对转换列表的第一项进行
排序
,将其转换回原始格式。请张贴您正在处理的代码。