python float to int转换


问题内容

我有一个问题确实使我发疯。通常这样做int(20.0)会导致20。到现在为止还挺好。但:

levels = [int(gex_dict[i]) for i in sorted(gex_dict.keys())]

gex_dict[i]返回浮点数,例如20.0,结果为:

"invalid literal for int() with base 10: '20.0'"

我距离捏紧键盘的最后一块仅一步之遥。


问题答案:

'20.0'是一个字符串,不是一个float;
您可以通过错误消息中的单引号来分辨。您可以int先使用进行解析float,然后使用以下方法将其截断int

>>> int(float('20.0'))
20

(尽管也许您希望在字典中存储浮点数而不是字符串,因为这似乎是您期望的。)