按值对枚举列表进行排序
Sort an enumerated list by the value
MWE:
list1 = [2,5,46,23,9,78]
list1 = list(enumerate(list1))
现在假设我想按索引 1 对这个列表进行排序,即按原始列表 1,即升序。
我该怎么做?
我想要一些可以给我索引和值的东西。
list2 = sorted(list1[1], key=float)
是这样的吗?
>>> from operator import itemgetter
>>> sorted(list1, key=itemgetter(1))
[(0, 2), (1, 5), (4, 9), (3, 23), (2, 46), (5, 78)]
通过向 key
we are specifying a comparison key for list elements used by sorted
. itemgetter
提供一个参数的函数是一个很好的围绕项目 getter 运算符 [i]
.
的函数包装
以item[1]
为关键字排序:
>>> list2 = sorted(list1, key=lambda x:x[1])
>>> list2
[(0, 2), (1, 5), (4, 9), (3, 23), (2, 46), (5, 78)]
您需要传入整个列表(不仅仅是第一个元素),并使用 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)]
MWE:
list1 = [2,5,46,23,9,78]
list1 = list(enumerate(list1))
现在假设我想按索引 1 对这个列表进行排序,即按原始列表 1,即升序。 我该怎么做?
我想要一些可以给我索引和值的东西。
list2 = sorted(list1[1], key=float)
是这样的吗?
>>> from operator import itemgetter
>>> sorted(list1, key=itemgetter(1))
[(0, 2), (1, 5), (4, 9), (3, 23), (2, 46), (5, 78)]
通过向 key
we are specifying a comparison key for list elements used by sorted
. itemgetter
提供一个参数的函数是一个很好的围绕项目 getter 运算符 [i]
.
以item[1]
为关键字排序:
>>> list2 = sorted(list1, key=lambda x:x[1])
>>> list2
[(0, 2), (1, 5), (4, 9), (3, 23), (2, 46), (5, 78)]
您需要传入整个列表(不仅仅是第一个元素),并使用 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)]