有NaN的元组(字符串,float)列表如何获得最小值?

2024-10-02 14:21:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个带有float('nan')的元组列表(string,float)。如何得到最小数的元组?如果我使用min,我总是得到nan。在

[('GroundBasedMechWT', nan), ('GroundBasedCTL', nan), ('GroundBasedManualWT', nan), ('GroundBasedManualLog', nan), ('CableManualWTLog', 60.77), ('CableManualWT', 58.52), ('CableManualLog', 68.17), ('CableManualCTL', nan), ('HelicopterManualWT', 96.82), ('HelicopterManualCTL', nan)]

Tags: 列表stringnanfloatmin元组cablemanualwtloggroundbasedmanuallog
3条回答

您可以使用自定义键,它将为NaN返回一个非常高的值:

min(list, key=lambda x: float('inf') if math.isnan(x[1]) else x[1])

你也可以试试这个:

min(filter(lambda t: not math.isnan(t[1]), l), key=itemgetter(1))

其中itemgetter表示^{}。在

>>> nan=float('NaN')
>>> x=[('GroundBasedMechWT', nan), ('GroundBasedCTL', nan), ('GroundBasedManualWT', nan), ('GroundBasedManualLog', nan), ('CableManualWTLog', 60.77), ('CableManualWT', 58.52), ('CableManualLog', 68.17), ('CableManualCTL', nan), ('HelicopterManualWT', 96.82), ('HelicopterManualCTL', nan)]
>>> nan<1
False
>>> nan<1.0
False
>>> min(x)
('CableManualCTL', nan)

我不认为nan比普通的花车小。也许敏正在按字母顺序比较字符串。在

(不是完整的答案,但可能会有所帮助)

相关问题 更多 >