python - 在 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 等以上。我想按照 v 从大到小的顺序对整个 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
推荐阅读
- django - 使用嵌套序列化程序时避免嵌套对象
- javascript - 使用 Django 为 AJAX 提取多个 HTML DOM 元素时遇到问题
- powershell - BufferCell 属性只读?
- netcdf - xarray to_netcdf 不是 netCDF
- java - WebElement.SendKeys(路径)问题:org.openqa.selenium.InvalidArgumentException:无效参数:找不到文件
- c - 检查两个文件是否相同
- c# - 添加孩子时xamarin滚动视图跳跃
- python - 传递给 Ordered Dict 创建的列表理解被创建为参考
- linux - 在 bash 脚本中调用 SSH Sudo 命令
- c# - 我应该在 ASP.NET 核心的 ClaimsIdentity 中存储一个小图片头像吗?如果没有,最好的方法是什么?