两个list对应排序

现有一个list为name,另一个为score,需求是按照score来排序,希望得到的结果name和之前的score一一对应,一开始我采用的方法为:

list(map(score.index, heapq.nlargest(top, score)))

这样可以得到由大到小的索引,之后根据索引就可以取到值,但存在一个问题,如果score分数一样,那么map就会丢失另一个name。

改进:使用zip将两个list组合,之后根据list其中的一个元素进行排序即可,代码如下:

zipped = zip(tag, score)
sort = sorted(zipped, key=lambda x: (x[1], x[0]), reverse=True)

之后如果想恢复可以:

result = zip(*sort_zipped)
# 将 sort_zipped 拆分成两个元组,为 [(3,2,1),(4,5,6)]
 
x_axis, y_axis = [list(x) for x in result]
# 将拆分后的两个元组分别变成 list 列表,为 [3,2,1],[4,5,6]
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码匀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值