在混合数据类型dictionairy中将float转换为int

时间:2017-10-07 19:43:37

标签: python python-3.x dictionary

咬了一些可能很容易解决的问题,但我发现的所有例子都在讨论统一密钥:值对。

我想要实现的目标如下:

我有一个包含混合值(字符串和浮点数)的字典,所有浮点数都应该转换为int,否则保留字符串。

示例:

d = {"key1":"something","key2":200.0, "key3":"another string", "key4":2017.0}

应该成为:

{"key1":"something","key2":200, "key3":"another string", "key4":2017}

我在某些变化中尝试了类似的东西,但没有运气

d = {k: int(v) if float(v) else v for k, v in d.items()}

实现这一目标的最佳方法是什么?

1 个答案:

答案 0 :(得分:4)

您的if float(v) 无法检查v是否为浮点数:它只会检查将v转换为浮点数的结果的真实性是否为{ {1}}。如果True引发异常,则异常被捕获。

您可以使用float(v) 来检查对象是否具有某种类型:

isinstance(..)

这将生成如下字典:

{k: int(v) if isinstance(v, float) else v for k, v in d.items()}