检索i,v列表的代码:
for i, v in enumerate(Some_array):
print(i, v)
输出
0 -100
1 30
2 -90
3 -80
4 100
5 1000
and so on
基本上我们所有的Vs都在100,30,-90等等。我想把整个I,v按从最大到最小的的顺序排序
预期输出
5 1000
4 100
1 30
3 -80
2 -90
0 -100
我希望索引值保持不变。他们不应该被分类。只应对v个值进行排序。所有其他答案也对i值进行排序,而不是5,4,1,3,2,0,我们得到了0,1,2,3,4,5作为索引,这是我不想要的。提到预期输出
将sorted
与enumerate(Some_array)
、lambda函数和参数reverse=True
:一起使用
Some_array = [-100,30,-90,-80,100,1000]
for i, v in sorted(enumerate(Some_array), key=lambda tup: tup[1], reverse=True):
print (i, v)
5 1000
4 100
1 30
3 -80
2 -90
0 -100
编辑:
Some_array = [-100,30,-90,-80,100,1000]
topN = 3
for i, v in sorted(enumerate(Some_array), key=lambda tup: tup[1], reverse=True)[:topN]:
print (i, v)
5 1000
4 100
1 30