将4个一对一映射列表转换为DICT列表(python)

将4个一对一映射列表转换为DICT列表(python),python,pandas,numpy,dictionary,dataframe,Python,Pandas,Numpy,Dictionary,Dataframe,我有4个列表,其中元素是一对一映射的。有成千上万的元素。我想创建一个dict,为每个元素提供4个属性,然后我想把这些dict放到一个列表中。(我的最终目标是创建熊猫数据帧并将其保存为HDF5文件。) 有没有一种简单高效的方法可以做到这一点,比如使用zip()和dict()而不是for循环 作为Python的一个工作示例,请考虑: list1 = ['obj1','obj2','obj3'] list2 = ['cat','dog','tree'] list3 = [7,8,9] list4 =

我有4个列表,其中元素是一对一映射的。有成千上万的元素。我想创建一个dict,为每个元素提供4个属性,然后我想把这些dict放到一个列表中。(我的最终目标是创建熊猫数据帧并将其保存为HDF5文件。)

有没有一种简单高效的方法可以做到这一点,比如使用zip()和dict()而不是for循环

作为Python的一个工作示例,请考虑:

list1 = ['obj1','obj2','obj3']
list2 = ['cat','dog','tree']
list3 = [7,8,9]
list4 = ['red','green','blue']
因此,我的想法是,最终我想要一个目录列表

[{'obj':'obj1','type':'cat','num':7,'color':'red'}, 
 {'obj':'obj2','type':'dog','num':8,'color':'green'}, 
 {'obj':'obj3','type':'tree','num':9,'color':'blue'}]

由于您标记了熊猫,因此使用
来记录

pd.DataFrame({'obj':list1,'type':list2,'num':list3,'color':list4}).to_dict('r')
Out[1204]: 
[{'color': 'red', 'num': 7, 'obj': 'obj1', 'type': 'cat'},
 {'color': 'green', 'num': 8, 'obj': 'obj2', 'type': 'dog'},
 {'color': 'blue', 'num': 9, 'obj': 'obj3', 'type': 'tree'}]

而不是
dict
s的
dict
列表

import pandas as pd
import numpy as np
list1 = ['obj1','obj2','obj3']
list2 = ['cat','dog','tree']
list3 = [7,8,9]
list4 = ['red','green','blue']
pd.DataFrame(np.array([list1, list2, list3, list4])).to_dict()

这里有一个非熊猫选项:

data = zip(list1, list2, list3, list4)
keys = ['obj', 'type', 'num', 'color']
list_of_dicts = [dict(zip(keys, i)) for i in data]

由于它使用每个列表中的对应元素(输出列表的第一个字典包含每个输入列表中的第一个元素),并且假设所有列表的大小相同,因此使用
列表理解
可能是另一种方法:

[{'obj':list1[i], 'type':list2[i], 
  'num':list3[i], 'color':list4[i]} for i in range(len(list1))]

根据问题:df是一个最终目标:)@quantumflash yw~快乐编码我真的应该学习我的复制粘贴技能,并真正复制预期的行。