首页 > 解决方案 > 如何使用备用字母值对列表列表进行排序,以保持与相邻数值的关联

问题描述

我有一个这样的列表的python列表

[['CCND1', '67', 'FAS', '99', 'IRAK3', '92', 'ALG14', '86', 'ADRBK1', '10'], ['PTRX', '95', 'CCNA', '33']]

每个字母值都与数值相关联,即IRAK392相关联(92,应该出现在 之后IRAK3)和PTRX95相关联(95应该出现在 之后PTRX)。现在,我想按字母顺序对这个列表列表进行排序,以便排序后的列表如下所示:

[['ADRBK1', '10', 'ALG14', '86', 'CCND1', '67', 'FAS', '99', 'IRAK3', '92' ], ['CCNA', '33', 'PTRX', '95' ]]

请注意,在排序列表中,按字母顺序排列的值是按字母顺序排列的,但请注意92,出现在IRAK3AND95之后出现,PTRX即保持关联。

我怎么能那样做?

标签: pythonlistsorting

解决方案


这是一种方法。

前任:

from itertools import chain

data = [['CCND1', '67', 'FAS', '99', 'IRAK3', '92', 'ALG14', '86', 'ADRBK1', '10'], ['PTRX', '95', 'CCNA', '33']]
#pair elements --> [('CCND1', '67'), ('FAS', '99')....
data = [zip(i[::2], i[1::2]) for i in data]
#sort and flatten 
data = [list(chain.from_iterable(sorted(i, key=lambda x: x[0]))) for i in data]
print(data)

推荐阅读