Python3:两个 list 一一对应,将一个 list 排序,要求另一个 list 随之排序

一、需求

现有两个 list:A, B,其中A中保存日期,B中保存该日期下的产量,要求按照产量排序,并使日期列表随之排序。

 

二、解法

1. 将A,B两个 list 变成 list of tuple,使用 zip() 函数

zipped = zip(A,B)

# print(list(zipped))
# python2中可以直接 print(zipped), python3 中改为 print(list(zipped))

假设A = [1,2,3], B = [6,5,4]

此时 zipped = [(1,6), (2,5), (3,4)]

 

2. 排序

sort_zipped = sorted(zipped,key=lambda x:(x[1],x[0]))
# 先按 x[1] 进行排序,若 x[1] 相同,再按照 x[0] 排序

此时 sort_zipped = [(3,4), [2,5], [1,6]] 

上述代码完成按照产量排序。

 

3. 拆分

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]

以上,问题解决。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值