python 两个list元素一一对应,一个list进行排序,另一个list上的元素也跟着排序,保持一一对应关系

一、问题

我们在对列表的数据或者元素进行处理的时候,可能会在同一次遍历里面得到两个列表,而它们的元素来自于同一类事件,是一一对应的关系(比如鞋子的品牌跟价格),这种时候我们可能需要将列表按照其中一种元素的大小排列(比如按鞋子的价格排列),而让另一个列表元素(品牌)的位置随之改变,继续跟上一个列表的元素位置保持一一对应的关系。


二、方法

用zip()函数将两个列表结合到一起,进行同步操作。

上代码!!!

1、先使用zip()将列表合并起来看看效果

# 以鞋子品牌和价格为例,创建两个列表
shoes = ["huili","lining","anta","tebu"]
price = [20,10,50,40]

# 将品牌跟价格合在一起
shoes_price = zip(shoes,price)

# 使用list()转为列表形式
print(list(shoes_price))

输出结果:

[('huili', 20), ('lining', 10), ('anta', 50), ('tebu', 40)]

 2、使用sorted()函数指定列表进行排序

# 按x[1]也就是按价格排序,若是x[0]则是按品牌排序
# 若是(x[1],x[0]),则表示先按价格再按品牌排序
sorted_shoes_price = sorted(shoes_price,key=lambda x:x[1])

# 将排序好的列表分出来并打印
result = zip(*sorted_shoes_price)
sorted_shoes, sorted_price = [list(x) for x in result]
print(sorted_shoes)
print(sorted_price)

输出结果:

['lining', 'huili', 'tebu', 'anta']
[10, 20, 40, 50]


三、总结

 可以看到最后存储品牌的列表也跟着价格的排序而随之改变元素位置,希望我的笔记能帮到您,如果觉得写得不错,卑微求个点赞,谢谢您的观看!!!

上一篇:2019日本Summer Sonic音乐节攻略(明星阵容)


下一篇:java 新特性之 stream 流