在许多词典python

时间:2016-06-07 09:21:42

标签: python list dictionary

我正在努力解决有关列表和词典的问题。

我有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..
]

所以简单来说,最终列表应该包含与列表长度一样多的字典。

虽然第一个字典有键='列表名称'每个列表的值和值= 第一个元素,第二个字典有键='列表名称'每个列表的值和值= 第二个元素,依此类推......

有人有一些建议吗?

感谢所有

3 个答案:

答案 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))]