如何同步排序分别存储字符串和浮点数的两个Python列表
现有代码的问题
你写的one, two = sorted(zip(one, two))存在两处错误:
- 默认
sorted对zip生成的(名字, 分数)元组排序时,会优先按元组第一个元素(名字)升序排列,不符合你按分数从高到低排序的需求 - 排序后返回的是4个元组组成的列表,直接赋值给2个变量会触发变量数量不匹配的报错
正确实现
你需要先按分数降序排序配对的元组,再将排序后的元组解包为两个独立列表,代码如下:
one = ['allen', 'steve', 'george', 'max'] two = [88.63, 33.99, 72.66, 92.11] # 配对两个列表,按分数(元组第二个元素)降序排序 sorted_list = sorted(zip(one, two), key=lambda x: x[1], reverse=True) # 解包为两个独立元组后转列表 one, two = zip(*sorted_list) one = list(one) two = list(two)
运行后输出和你要求的结果完全一致:
one结果:['max', 'allen', 'george', 'steve']two结果:[92.11, 88.63, 72.66, 33.99]
内容的提问来源于stack exchange,提问作者Let'sbecool
相关产品推荐
相关产品推荐

