Python中的逐元素连接

Python中的逐元素连接,python,pandas,concatenation,Python,Pandas,Concatenation,假设我有两个列表: header = ['a', 'b', 'c', 'd'] data_type = ['str', 'str', 'float64', 'float64'] 如何获得这样的组合列表: data_type = {'a':str, 'b':str, 'c':float64, 'd':float64} 这用于在pd.read\u csv方法中定义数据类型。 header = ['a', 'b', 'c', 'd'] data_type = ['str', 'str', 'flo

假设我有两个列表:

header = ['a', 'b', 'c', 'd']
data_type = ['str', 'str', 'float64', 'float64']
如何获得这样的组合列表:

data_type = {'a':str, 'b':str, 'c':float64, 'd':float64}
这用于在pd.read\u csv方法中定义数据类型。

header = ['a', 'b', 'c', 'd']
data_type = ['str', 'str', 'float64', 'float64']
dict(zip(header, data_type))
这个想法是:
两个列表与zip函数合并,然后生成元组的元组,并使用dict函数转换为字典。

从您的问题来看,似乎您实际上想要返回一个datatype python关键字,而不是一个datatype字符串,因此我将使用dict理解eval,我将这样做:

from numpy import float64
{header[i]:eval(data_type[i]) for i in range(len(header))}

{'a': str, 'b': str, 'c': numpy.float64, 'd': numpy.float64}

还请注意,dict理解选项稍慢,每个循环1.91µs,而dict+zip选项的每个循环1.62µs,不带引号??有效,但是suspicious@KarolyHorvath反之:不带引号的float64?有效的也许在熊猫身上?@KarolyHorvath是的,在熊猫身上。事实上,我刚刚验证了这两种方法是否都可以使用。原始文档没有引号,这就是我没有添加引号的原因。看:这到底是怎么在10秒钟内得到3张反对票的?我对你的答案投了更高的票,只是因为得到这么多反对票是不公平的。我也对你的答案投了更高的票,因为它帮助我澄清了一些概念。我使用python的第二周。@LedgerYu还有另一种方法:{k:data_type[i]for i,k in enumerateheader}。对我来说,在这里使用enumerate看起来更像Python,而且更透明一点,因为它似乎真正回答了这个问题。这个问题不清楚str/float64值的数据类型。@JulienMarrec对不起,兄弟。我不知道这是怎么发生的。@JulienMarrec那肯定不是一个人。也许是因为你在安德烈之后回答了同样的问题?熊猫的问题有时对纯python的回答者来说是苛刻的。@Jean-Françoisfare实际上一开始他的回答只是关于听写理解,而且由于zip应该更高效,也许更优雅一些,一些用户认为这不是最好的方式。不管怎样,他的回答也是对的,我没有投反对票。我知道你没有。我避免对我的答案同时投否决票,除非它们真的很糟糕/有误导性/错误的内容。顺便说一句,使用zip获得5张赞成票,这真是一项不错的投资。我的猜测是,有很多熊猫专家不知道很多有用的python基本知识。祝贺你们。@Jean-Françoisfar是的,这有点不可预测:不管怎样,我很高兴它对这里的人们如此有帮助。