MWE:
list1 = [2,5,46,23,9,78]
list1 = list(enumerate(list1))
现在假设我想通过索引1对该列表进行排序,即按原始列表1排序,例如按升序排序。 我该怎么做?
我想要的东西可以给我索引和值。
list2 = sorted(list1[1], key=float)
答案 0 :(得分:5)
以item[1]
作为关键字排序:
>>> list2 = sorted(list1, key=lambda x:x[1])
>>> list2
[(0, 2), (1, 5), (4, 9), (3, 23), (2, 46), (5, 78)]
答案 1 :(得分: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
是项getter运算符[i]
的一个很好的函数包装器。
答案 2 :(得分: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)]