【发布时间】:2021-01-20 22:36:35
【问题描述】:
我正在尝试以一种有效的方式查找列表项的排名。问题是当我有一个 None 值时。
我当前的解决方案根据reverse 值将 None 放在排名的顶部或底部:
tmp = [29.84087, 34.3745, 34.91104, 35.72471, 19.31632, 728.1475, None, 404.3762, None]
[sorted(values, key=lambda x: (x is None, x), reverse=False).index(x) + 1 for x in values]
-> [2, 3, 4, 5, 1, 7, 8, 6]
我应该如何更改排名代码以获得 None for None 值?
所需的输出如下所示:
[2, 3, 4, 5, 1, 7, None, 6, None]
【问题讨论】:
-
您希望
None值出现在结果中,还是删除它们? -
我希望它们在结果中为无。
-
这是您的预期结果吗?
[2, 3, 4, 5, 1, 7, None, 6] -
您的期望是什么,因为我不清楚?
-
您应该通过不为值列表中的每个项目创建排序列表来节省大量计算
标签: python python-3.x sorting