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

标签 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) ]

要转换的列表很长,大约有 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/

相关文章:

mysql - 在 node.js - mysql 中使用 where 子句选择查询?

python - 为什么这个正则表达式表现得贪婪,而我告诉它不要贪婪?

algorithm - 为什么 KNN 的余弦距离比欧几里得距离快得多?

algorithm - 递归算法数组的时间复杂度

actionscript-3 - AS3从子类访问父类的变量

ios - dequeueReusableCell 时 Swift 自定义 CollectionViewCell 转换失败

python - Json 文件中的列表框

python - 如何解析key :value format?中的url参数

python - 为另一个数组中的所有 float 查找数组中最接近的 float

python - 如何诊断访问sqlite数据库慢的原因?