如何根据他们在python中指向的内容对索引列表进行排序?
我有
indices = list(range(len(mylist)))
我想对索引进行排序,以便a
在索引b
之前mylist[a] > mylist[b]
,然后{{1}}。
答案 0 :(得分:3)
indicies.sort(lambda x,y:mylist[x]-mylist[y])
答案 1 :(得分:1)
另外,让我使用您原始问题中提供的信息添加以下代码段作为答案...
我想对索引进行排序,以便if a在索引中先于b,然后是mylist [a]> MYLIST [B]。
...以及您在评论中提供的其他信息
另外,如果mylist是一个列表,该怎么办? numpy浮动?
然后你就可以做到:
In [2]: import numpy
In [3]: a = numpy.asarray([-1, 2.73, 15.827, -8.48, 9, 13, 15, 3.22, 0, -1, 1])
In [4]: indices = a.argsort()[::-1]
Out[4]: array([ 2, 6, 5, 4, 7, 1, 10, 8, 9, 0, 3])
In [5]: a[indices]
Out[5]:
array([ 15.827, 15. , 13. , 9. , 3.22 , 2.73 , 1. ,
0. , -1. , -1. , -8.48 ])
答案 2 :(得分:0)
Python 2.6+,最优雅的答案:
indices.sort(key = lambda x:mylist[x], reverse = True)