2016-06-07 60 views
-1

我正在努力解決有關列表和字典的問題。很多字典中的很多列表python

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

這麼簡單的話最終名單應該包含儘可能多的詞典作爲列表的長度。

雖然第一詞典有鍵=「列表名稱」和值= 每個列表的第一元件,第二詞典有鍵=「列表名稱」和值= 每個列表的第二元件,等...

有人有一些建議嗎?

感謝所有

回答

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) 
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

嘗試Python列表理解:

data = [{'Fe':Fe[i], 'Ca':Ca[i], 'Mg':Mg[i], 'label':label[i]} for i in range(len(Fe))]