对for循环中的数字进行排序,同时保留索引值



检索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作为索引,这是我不想要的。提到预期输出

sortedenumerate(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

最新更新