在Python中将值转换为各自数据类型的最快方法

Suj*_*jit 5 python performance casting

我有一个值列表 - 所有字符串.我想将这些值转换为各自的数据类型.我将值映射到可用的类型信息.

有三种不同的数据类型: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) ]
Run Code Online (Sandbox Code Playgroud)

要转换的列表很长,就像180个值,我需要为数千个这样的列表执行此操作.上面代码的性能非常差.最快的方法是什么?

谢谢

Suj*_*jit 0

谢谢你们所有这些方法。是的,我几乎尝试了所有提到的方法,但没有一个效果很好。

我尝试了以下方法,它非常适合我的性能需求。这就是我所做的。

  1. 我按照 utdemir 的建议处理了日期时间值
  2. 我已经为所有 int 错误值插入了值 0,代码如下 -

    [i] = value if value != '' else 0

  3. 我没有使用字典逐个强制值,而是使用列表一次性强制所有值。

    def coerce(l):
    return [ l[0], int(l[1]), int(l[2]) ... ]

我的观察:

  1. 单独处理错误情况并立即强制有很大帮助。
  2. 让代码从异常中恢复需要花费很多时间。
  3. 多次查看列表并不会造成什么伤害(我这样做是为了处理错误情况)
  4. 举个例子,对于几个小时的数据(60 万条记录),我的方法将运行时间从 6-7 分钟缩短到 2 分 30 秒