将4个一对一映射列表转换为DICT列表(python)
我有4个列表,其中元素是一对一映射的。有成千上万的元素。我想创建一个dict,为每个元素提供4个属性,然后我想把这些dict放到一个列表中。(我的最终目标是创建熊猫数据帧并将其保存为HDF5文件。) 有没有一种简单高效的方法可以做到这一点,比如使用zip()和dict()而不是for循环 作为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 =
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~快乐编码我真的应该学习我的复制粘贴技能,并真正复制预期的行。