按值对枚举列表进行排序

时间:2017-07-10 16:19:36

标签: python list enumerate

MWE:

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

现在假设我想通过索引1对该列表进行排序,即按原始列表1排序,例如按升序排序。 我该怎么做?

我想要的东西可以给我索引和值。

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

3 个答案:

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