python - 根据值对列表进行排序,如果相同的值使用索引对其进行排序
问题描述
我想对一个给定列表进行排序,如下所示
输入 :-[0,0,1,0,2]
排序后我想要一个这样的列表
[1,2,4,3,5]
我们可以看到列表是否具有相同的值,它将根据索引进行比较。
我的问题的另一个例子,输入:[5,3,6,4,6]
输出必须是[3,1,4,2,5]
获得结果的最佳方法是什么?先感谢您。
解决方案
[0,0,1,0,1]
从索引从 1 开始创建一对,然后[(1,0),(2,0), (3,1)...]
按秒元素 ex: 0
in排序(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]