假设我有这样一个字典:
[{'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:32:58
创建一个很好的小函数来解析键/值:
def try_convert(x):
try:
return int(x)
except ValueError:
pass
try:
return float(x)
except ValueError:
return x现在就使用它吧!对于某些字典d,
d = {try_convert(k): try_convert(v) for k, v in d.items()}发布于 2021-04-30 09:32:14
这应该是可行的:
original_values = [{'Chr': 'chrX', 'Start': '107844640', 'End': '107844640'}]
dictionary = original_values[0]
for key in dictionary:
try:
dictionary[key] = int(dictionary[key])
except:
try:
dictionary[key] = float(dictionary[key])
except:
pass
output = [dictionary]发布于 2021-04-30 09:38:28
下面的代码尝试将字符串转换为浮点型,然后检查它是否是整数,并相应地更新原始字典。
dict = {'Chr': 'chrX', 'Start': '107844640', 'End': '107844640.100'}
print('Before: ', dict)
for key, value in dict.items():
try:
v = float(value)
if v.is_integer():
v = int(v)
d = {key: v}
dict.update(d)
except ValueError:
continue
print('After: ', dict)输出:
{'Chr': 'chrX', 'Start': '107844640', 'End': '107844640.100'}
{'Chr': 'chrX', 'Start': 107844640, 'End': 107844640.1}https://stackoverflow.com/questions/67327043
复制相似问题