咬了一些可能很容易解决的问题,但我发现的所有例子都在讨论统一密钥:值对。
我想要实现的目标如下:
我有一个包含混合值(字符串和浮点数)的字典,所有浮点数都应该转换为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()}
实现这一目标的最佳方法是什么?
答案 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()}