gpt4 book ai didi

python - 将列表项转换为定义的数据类型

转载 作者:行者123 更新时间:2023-11-28 19:56:16 24 4
gpt4 key购买 nike

我是 python 的新手,我不确定如何执行以下操作。

我有一个列表 foo,其中包含某个地 block 的元数据和测量值。例如,一个 plotID、调查日期、调查员姓名首字母、多个测量值和一个分类变量。

foo= ['plot001', '01-01-2013', 'XX', '10', '12.5', '0.65', 'A']

因为这些数据是从 .txt 中读取的,所以所有列表项都是字符串。我的问题是:如何将每个列表项转换为适当的数据类型?。我可以列出所需的数据类型:

dType= ['str', 'str', 'str', 'int', 'float', 'float', 'float', 'str']

如果我可以将 dType 中的每个项目作为函数应用于 foo 中的匹配元素,那就太好了:

out= [str(foo[0]), str(foo[1]), str(foo[2]), int(foo[3]), float(foo[4]), float(foo[5]), float(foo[6]), str(foo[7])]

但我相信一定有更好的解决方案!感谢您的任何建议!

最佳答案

dType 设为内置工厂列表,而不是字符串列表:

dType= [str, str, str, int, float, float, str]

(我删除了一个额外的float)

然后只需使用zip:

[t(x) for t,x in zip(dType,foo)]
Out[6]: ['plot001', '01-01-2013', 'XX', 10, 12.5, 0.65, 'A']

好处:您甚至可以想象并制作自己的工厂函数,并以与 functools.partial 相同的方式应用它们。比如说,如果您希望该日期变成一个 datetime 对象:

def datetime_factory(format,s):
from datetime import datetime
return datetime.strptime(s,format)

from functools import partial

dType= [str, partial(datetime_factory,'%d-%m-%Y'), str, int, float, float, str]

[t(x) for t,x in zip(dType,foo)]
Out[29]: ['plot001', datetime.datetime(2013, 1, 1, 0, 0), 'XX', 10, 12.5, 0.65, 'A']

(这里需要制作我们自己的工厂 def,因为 partial 只允许您部分应用 leftmost 参数,而 strptime 需要先格式化字符串)

关于python - 将列表项转换为定义的数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20587218/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com