我有一个元组列表:
a = [(10, 11), (5, 5), (2, 3), (6, 7), (8, 3), (9, 2)]
和一个带有值的简单列表b = [10, 9, 10, 2, 8, 3]
。然后我列举第二个列表,并出于某些目的对其进行排序
b_enumerated = list(enumerate(b))
# [(0, 10), (1, 9), (2, 10), (3, 2), (4, 8), (5, 3)]
b_sorted = sorted(b_enumerated, key=lambda x: x[1], reverse=True)
# [(0, 10), (2, 10), (1, 9), (4, 8), (5, 3), (3, 2)]
现在我想根据第二个排序列表重新排列我的第一个列表,因此我希望得到[(10, 11), (2, 3), (5, 5), (8, 3), (9, 2), (6, 7)]
(原始列表的元组按排序列表的索引顺序:0、2、1、4、5、3),其中,例如,我枚举的第一个列表是[(0, (10, 11)), (1, (5, 5)), (2, (2, 3)), (3, (6, 7)), (4, (8, 3)), (5, (9, 2))]
我怎样才能达到预期的结果?也许我需要使用某种索引,因为对压缩列表排序没有帮助
谢谢
快速回答
简要说明
你基本上是想说‘发送
a[0]
到a_sorted[0]
,发送a[1]
到a_sorted[2]
。。。发送a[i]
到a_sorted[b_sorted[i][0]]
这可以通过代码来完成
它工作得很好,但是可以通过迭代
b_sorted
来缩短和整理如果目的是以
b
的相反顺序对a
进行排序,那么首先不需要枚举b
并对枚举序列进行排序来构建b_sorted
的中间列表相反,您可以使用
a
压缩b
进行排序,然后只输出结果元组序列中的第二项:这将返回:
相关问题 更多 >
编程相关推荐