我有一个嵌套的dict,其中几个数值表示为字符串。是否有一种pythonic方法将包含int的所有字符串转换为int,并将所有包含float的字符串转换为float? 例如
{'top': {'val1': '123', 'val2': '1.23'}, 'top2': '123'}
要
{'top': {'val1': 123, 'val2': 1.23}, 'top2': 123}
答案 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()