如何基于对应指标列表对Python文档列表进行升序排序?
按对应指标升序排序文档列表的方法
当然有合适的方法啦!在Python里,我们可以通过几种简洁的方式实现这个需求,下面给你分享两种常用方案:
方法一:使用zip + sorted
我们可以先把文档列表和指标列表打包成一一对应的元组,再根据元组里的指标值进行升序排序,最后提取出文档名称即可:
documents = ['document1.txt', 'document2.txt', 'document3.txt', 'document4.txt', 'document5.txt'] metrics = [0.2, 0.55, 0.4, 0.8, 0.4] # 打包配对后按指标排序,提取文档名 ordered_documents = [doc for doc, metric in sorted(zip(documents, metrics), key=lambda x: x[1])] print(ordered_documents)
这段代码运行后,会输出符合你预期的结果:['document1.txt', 'document3.txt', 'document5.txt', 'document2.txt', 'document4.txt'](当指标值相同时,会按文档名的字符串顺序排序,这也完全符合你允许的两种输出情况)。
方法二:使用enumerate + 索引排序
如果你想保持相同指标值的文档在原列表中的相对顺序,也可以通过索引来实现:
documents = ['document1.txt', 'document2.txt', 'document3.txt', 'document4.txt', 'document5.txt'] metrics = [0.2, 0.55, 0.4, 0.8, 0.4] # 按指标值对索引排序,再根据索引提取文档 ordered_documents = [documents[i] for i in sorted(range(len(documents)), key=lambda x: metrics[x])] print(ordered_documents)
这个方法会输出和你给出的第一种预期完全一致的结果:['document1.txt', 'document3.txt', 'document5.txt', 'document2.txt', 'document4.txt'],因为Python的sorted是稳定排序,相同指标值的索引会保持原列表中的顺序。
两种方法都能完美满足你的需求,你可以根据自己的偏好选择~
内容的提问来源于stack exchange,提问作者Moonstone5629
相关产品推荐
相关产品推荐

