假设我有这样一个字典:
[{'Chr': 'chrX', 'Start': '107844640', 'End': '107844640'}]几乎所有的键值都是字符串,不是全部,但几乎都是(我不知道为什么)。
我想检查所有的键值,并且仅当字符串包含数字时才将strings转换为int or float。'10.020'应为float,'10.020abc'应保留为string,“123”应为int。
这是预期的结果:
[{'Chr': 'chrX', 'Start': 107844640, 'End': 107844640}]我在JavaScript中用Number()做了类似的事情。
有没有什么方法可以做到这一点呢?
发布于 2021-04-30 09:48:31
已经有一些类似的答案,但这可以在不改变原始输入的情况下使用列表理解。
def convert_value(value):
try:
v_float = float(value)
if v_float.is_integer():
return int(v_float)
else:
return v_float
except ValueError:
return value
input_l = [{'Chr': 'chrX', 'Start': '107844640', 'End': '107844640'},
{'Chr': '126chrX', 'Start': '0.50', 'End': '1'}]
output_l = [{k: convert_value(v) for k,v in doc.items()} for doc in input_l]https://stackoverflow.com/questions/67327043
复制相似问题