如何通过使第一行与另一个列表匹配来对列表列表进行排序?

hys*_*tic 0 python list

我想对列表列表进行排序,即:

[['Y', 'K', 'E'],
 [3, 1, 2],
 [6, 4, 5]]
Run Code Online (Sandbox Code Playgroud)

该列表的第一行应与另一个提供的列表匹配(此列表将始终包含与第一个列表的第一行匹配的字母):

['K', 'E', 'Y']
Run Code Online (Sandbox Code Playgroud)

所以最终输出是:

[['K', 'E', 'Y'],
  [1, 2, 3],
  [4, 5, 6]]
Run Code Online (Sandbox Code Playgroud)

Tig*_*kT3 10

简单的方法是将其转置,使用zip()键列表中第一个元素索引的键对其进行排序,然后将其转置回:

>>> data = [['Y', 'K', 'E'],
...  [3, 1, 2],
...  [6, 4, 5]]
>>> key = 'KEY'
>>> sorted(zip(*data), key=lambda x: key.index(x[0]))
[('K', 1, 4), ('E', 2, 5), ('Y', 3, 6)]
>>> list(zip(*sorted(zip(*data), key=lambda x: key.index(x[0]))))
[('K', 'E', 'Y'), (1, 2, 3), (4, 5, 6)]
Run Code Online (Sandbox Code Playgroud)