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

时间:2015-12-09 11:16:48

标签: python list

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

[['Y', 'K', 'E'],
 [3, 1, 2],
 [6, 4, 5]]

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

['K', 'E', 'Y']

这样最终的输出是:

[['K', 'E', 'Y'],
  [1, 2, 3],
  [4, 5, 6]]

2 个答案:

答案 0 :(得分:10)

简单的方法是使用Map<String, String> map = new HashMap<String, String>(); for(int i=0;i<a.size();i++) map.put(a.get(i), b.get(i)); 转置它,使用键列表中第一个元素索引的键对其进行排序,然后将其转置回来:

zip()

答案 1 :(得分:3)

使用列表推导的一种非常简单的方法:

>>> L = [['Y', 'K', 'E'], [3, 1, 2], [6, 4, 5]]
>>> indexes = [L[0].index(x) for x in "KEY"]
>>> [[row[i] for i in indexes] for row in L]
[['K', 'E', 'Y'], [1, 2, 3], [4, 5, 6]]