Python:将dict中的所有integer-和floatstrings转换为它们的数值

时间:2017-10-30 16:09:35

标签: python python-3.x dictionary

我有一个嵌套的dict,其中几个数值表示为字符串。是否有一种pythonic方法将包含int的所有字符串转换为int,并将所有包含float的字符串转换为float? 例如

{'top': {'val1': '123', 'val2': '1.23'}, 'top2': '123'}

{'top': {'val1': 123, 'val2': 1.23}, 'top2': 123}

1 个答案:

答案 0 :(得分:2)

你可以做的一件事就是确定某个东西是不是浮点数就是寻找"的位置。"

if "." in string:
    result = float(string)
else:
    result = int(string)

如果您不确定输入是否可转换为数字,请使用try-except

try:
if "." in string:
    result = float(string)
else:
    result = int(string)
except:
    print("Invalid")

或类似的东西。但是,如果你想要" 5.0",例如,要算作一个int,而不是一个浮点数,那就有一种优雅的方式:

if int(string)==float(string):
    result = int(string)
else:
    result = float(string)

基本上如果int()没有改变值,它就会使用它。否则,它使用float()