MWE:排序的枚舉列表由值
list1 = [2,5,46,23,9,78]
list1 = list(enumerate(list1))
現在假設我想通過原始列表1,由索引1,即排序這個列表中說,按升序排列。 我該怎麼做?
我想要的東西,然後可以給我的索引和值。
list2 = sorted(list1[1], key=float)
MWE:排序的枚舉列表由值
list1 = [2,5,46,23,9,78]
list1 = list(enumerate(list1))
現在假設我想通過原始列表1,由索引1,即排序這個列表中說,按升序排列。 我該怎麼做?
我想要的東西,然後可以給我的索引和值。
list2 = sorted(list1[1], key=float)
排序與item[1]
關鍵:
>>> list2 = sorted(list1, key=lambda x:x[1])
>>> list2
[(0, 2), (1, 5), (4, 9), (3, 23), (2, 46), (5, 78)]
是這樣的嗎?
>>> 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]
的不錯功能包裝。
你需要在整個列表(不只是第一個元素)來傳遞,並且使用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)]
如果它是一個選項,考慮枚舉之前排序列表:'名單(枚舉(排序(列表1)))',除非你打算繼續引用原來的指標,在這種情況下,該不起作用。 – Peri461