我正在努力解决有关列表和词典的问题。
我有4个简单的列表(长度相同):
Fe = [27.8, 11.08, 13.5, 31.23, 41.56, 1.0, 1.56, 28.86, 20.19, 5.91, 50.47, 39.38, 25.58, 45.24, 25.48, 44.1, 47.72, 27.59, 53.06]
Ca = [110.8, 124.34, 132.07, 82.14, 213.04, 91.47, 133.31, 268.01, 86.81, 211.26, 224.33, 201.46, 59.5, 154.9, 163.59, 231.25, 123.57, 119.6, 186.35]
Mg = [18.07, 21.55, 24.21, 13.89, 36.35, 20.4, 27.11, 39.96, 13.96, 29.51, 41.67, 33.17, 9.45, 31.04, 28.85, 49.53, 24.22, 22.86, 36.88]
label = [u'2818/22/0834', u'2818/22/0851', u'2818/22/0853', u'2818/22/0886', u'B0F', u'B12T', u'B1T', u'B22F', u'B21T', u'B26T', u'B33F', u'B4F', u'P1', u'P21', u'P24', u'P25', u'P27', u'P28', u'P29']
我试图做的是将该列表转换为由许多词典组成的唯一列表。
最终列表应如下所示:
data = [
{'Fe':27.8, 'Ca':110.8, 'Mg':18.07, 'label':u'2818/22/0834'},
{'Fe':11.08, 'Ca':124.34, 'Mg':21.55, 'label':u'2818/22/0851'},
{'Fe':13.5, 'Ca':132.07, 'Mg':24.21, 'label':u'2818/22/0853'},
... and so on..
]
所以简单来说,最终列表应该包含与列表长度一样多的字典。
虽然第一个字典有键='列表名称'每个列表的值和值= 第一个元素,第二个字典有键='列表名称'每个列表的值和值= 第二个元素,依此类推......
有人有一些建议吗?
感谢所有
答案 0 :(得分:3)
from itertools import izip
[dict(izip(['Fe','Ca','Mg','label'], i)) for i in izip(Fe, Ca, Mg, label)]
#Out[52]:
#[{'Ca': 110.8, 'Fe': 27.8, 'Mg': 18.07, 'label': u'2818/22/0834'},
# {'Ca': 124.34, 'Fe': 11.08, 'Mg': 21.55, 'label': u'2818/22/0851'},
# ...
Pandas
方法:
import pandas as pd
pd.DataFrame({'Fe':Fe,'Ca':Ca,'Mg':Mg,'label':label}).T.to_dict().values()
答案 1 :(得分:1)
我认为这对你有用!
data = []
for i in range(len(Fe)):
temp = {}
temp["Fe"] = Fe[i]
temp["Ca"] = Ca[i]
temp["Mg"] = Mg[i]
temp["label"] = label[i]
data.append(temp)
答案 2 :(得分:1)
尝试python list comprehension:
data = [{'Fe':Fe[i], 'Ca':Ca[i], 'Mg':Mg[i], 'label':label[i]} for i in range(len(Fe))]