排序索引列表

时间:2011-02-10 22:17:40

标签: python sorting

如何根据他们在python中指向的内容对索引列表进行排序?

我有

 indices = list(range(len(mylist)))

我想对索引进行排序,以便a在索引b之前mylist[a] > mylist[b],然后{{1}}。

3 个答案:

答案 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)