首页 > 解决方案 > 根据值对列表进行排序,如果相同的值使用索引对其进行排序

问题描述

我想对一个给定列表进行排序,如下所示

输入 :-[0,0,1,0,2]

排序后我想要一个这样的列表 [1,2,4,3,5]

我们可以看到列表是否具有相同的值,它将根据索引进行比较。

我的问题的另一个例子,输入:[5,3,6,4,6]输出必须是[3,1,4,2,5]

获得结果的最佳方法是什么?先感谢您。

标签: pythonc++clistsorting

解决方案


[0,0,1,0,1]从索引从 1 开始创建一对,然后[(1,0),(2,0), (3,1)...]按秒元素 ex: 0in排序(1,0),然后最后取第一个元素。

l = [0,0,1,0,2]

[i[0] for i in sorted(enumerate(l,1), key=lambda x: x[1])]
[1, 2, 4, 3, 5]

推荐阅读