python - 如何使用备用字母值对列表列表进行排序,以保持与相邻数值的关联
问题描述
我有一个这样的列表的python列表
[['CCND1', '67', 'FAS', '99', 'IRAK3', '92', 'ALG14', '86', 'ADRBK1', '10'], ['PTRX', '95', 'CCNA', '33']]
每个字母值都与数值相关联,即IRAK3
和92
相关联(92
,应该出现在 之后IRAK3
)和PTRX
和95
相关联(95
应该出现在 之后PTRX
)。现在,我想按字母顺序对这个列表列表进行排序,以便排序后的列表如下所示:
[['ADRBK1', '10', 'ALG14', '86', 'CCND1', '67', 'FAS', '99', 'IRAK3', '92' ], ['CCNA', '33', 'PTRX', '95' ]]
请注意,在排序列表中,按字母顺序排列的值是按字母顺序排列的,但请注意92
,出现在IRAK3
AND95
之后出现,PTRX
即保持关联。
我怎么能那样做?
解决方案
这是一种方法。
前任:
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)
推荐阅读
- c++ - 集成 c++ 和 qml
- angular-material-6 - Angular Material 徽章实现
- javascript - 寻找DA,B(n)的第n个字符的算法
- javascript - Javascript 中的缩小功能不起作用,但在启用源映射时起作用
- ruby-on-rails - 将 curl 重写为 HTTP POST 请求以获取访问令牌
- javascript - Puppeteer:如何将对象传递给 page.evaluate?
- python - 当文件没有所需的权限时抛出异常
- javascript - 如何将状态标志存储为 GLSL / WebGL 的浮点数
- java - 监视自注入 bean
- apache-spark - 在 pyspark 中设置 log4j 属性