我有一个值列表 - 所有字符串。我想将这些值转换为它们各自的数据类型。我将值映射到可用的类型信息。
共有三种不同的数据类型:int、str、datetime。 代码需要能够处理数据的错误情况。
我正在做类似的事情:-
tlist = [ 'some datetime value', '12', 'string', .... ]
#convert it to: [ datetime object, 12, 'string', ....]
error_data = ['', ' ', '?', ...]
d = { 0: lambda x: datetime.strptime(x,...) if x not in error_data else x,
1: lambda x: int(x) if x not in error_data else 0,
2: lambda x: x
...
}
result = [ d[i](j) for i, j in enumerate(tlist) ]
要转换的列表很长,大约有 180 个值,我需要对数千个这样的列表进行转换。上面代码的性能很差。最快的方法是什么?
谢谢
最佳答案
如果您的日期时间值始终一致,为什么不让类型转换处理您试图在 error_data 中管理的无效数据。这不像某些解决方案那么吸引人,但使得基于列表中数据位置的类型转换管理起来更容易维护和扩展。
def convert(position, val):
if position == 0:
try:
return datetime.strptime(val, '%Y-%m-%d %H:%M:%S') # assuming date is in a constant format
except ValueError:
return val
elif position in (1, 15, 16): # assuming that you have other int values in other "columns"
try:
return int(val)
except ValueError:
return 0
else: # string type
return val
result = [convert(i,j) for i, j in enumerate(tlist)]
关于python - 在 Python 中将值转换为各自数据类型的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7364076/