2017-07-10 128 views
0

MWE:排序的枚舉列表由值

list1 = [2,5,46,23,9,78] 
list1 = list(enumerate(list1)) 

現在假設我想通過原始列表1,由索引1,即排序這個列表中說,按升序排列。 我該怎麼做?

我想要的東西,然後可以給我的索引和值。

list2 = sorted(list1[1], key=float) 
+0

如果它是一個選項,考慮枚舉之前排序列表:'名單(枚舉(排序(列表1)))',除非你打算繼續引用原來的指標,在​​這種情況下,該不起作用。 – Peri461

回答

4

排序與item[1]關鍵:

>>> list2 = sorted(list1, key=lambda x:x[1]) 
>>> list2 
[(0, 2), (1, 5), (4, 9), (3, 23), (2, 46), (5, 78)] 
3

是這樣的嗎?

>>> from operator import itemgetter 
>>> sorted(list1, key=itemgetter(1)) 
[(0, 2), (1, 5), (4, 9), (3, 23), (2, 46), (5, 78)] 

通過向key提供一個參數的函數的便指定由sorted用於列表元素的比較關鍵。 itemgetter是圍繞物品獲取運營商[i]的不錯功能包裝。

1

你需要在整個列表(不只是第一個元素)來傳遞,並且使用lambda函數來排序的價值 - x[1]

>>> list1 = [2,5,46,23,9,78] 
>>> list2 = list(enumerate(list1)) 
>>> list2 
[(0, 2), (1, 5), (2, 46), (3, 23), (4, 9), (5, 78)] 
>>> list3 = sorted(list2, key=lambda x: x[1]) 
>>> list3 
[(0, 2), (1, 5), (4, 9), (3, 23), (2, 46), (5, 78)]