2011-02-10 71 views
0

如何按照它們在python中指向的內容對索引列表進行排序?索引排序清單

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

我想,這樣如果a在指數則mylist[a] > mylist[b]之前b指標進行排序。

回答

0

的Python 2.6+,最優雅的回答:

indices.sort(key = lambda x:mylist[x], reverse = True) 
3
indicies.sort(lambda x,y:mylist[x]-mylist[y]) 
+0

我需要進口的東西來獲得某種工作? – 2011-02-10 22:34:33

+0

看我的編輯,對不起。排序是一個列表函數 – dfb 2011-02-10 22:38:05

1

此外,讓我補充下面的代碼片段作爲一個答案,使用你原來的問題提供的信息...

我想給指數排序,以便如果 一個優先於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 ])