Python 2d列表按列标题排序

2024-04-24 12:25:35 发布

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

我有一个二维列表:

['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。 如何更改此设置以使列按顺序显示:

^{pr2}$

我希望标题按A、B、C、D的顺序排列,但也要将下面的列与标题一起移动


Tags: 标题列表顺序rowheaderpr2
2条回答

您可以使用sortedzip,首先用zip(*a)创建列的列表,然后用sorted对其进行排序(基于第一个索引),再使用zip转换为第一个状态,并用map将索引转换为list:

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

你可以用纽比。在

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

相关问题 更多 >