2013-10-04 143 views
-2

的名單我有如下列表Python列表到字典

lines = 
    [['client', 'name', 'phone', 'address', 'email'], 

    ['client2', 'name2', 'phone2', 'address2', 'email2'], 

    ['client3', 'name3', 'phone3', 'address3', 'email3']] 

我想知道是否有可能把一個列表轉換的DIC列表。

喜歡:根據您的意見

lines = 
    [{Client: client, Name:name, Phone:phone, Address:address, Email:email}, 

    {Client: client2, Name:name2, Phone:phone2, Address:address2, Email:email2}, 

    {Client: client3, Name:name3, Phone:phone3, Address:address3, Email:email3}] 
+3

由於單個鍵有多個值,所需的輸出不是有效字典。例如,'Client'可以是'client'或'client2'。 –

+0

字典列表如何? – Alvaro

+0

我明白了,所以也許我可以說一個字典清單? –

回答

0

,這裏就是我想你想。首先,你需要的是什麼所有的按鍵應該叫列表:

>>> keys = ["Client", "Name", "Phone", "Address", "Email"] 

然後,它很容易從列表中去與儘可能多的項目的鍵的字典:

>>> info_list = ["Client #1", "Joe", "800-213-4445", "123 Fake St.", "[email protected]"] 
>>> dict(zip(keys, info_list)) 
{'Email': '[email protected]', 'Phone': '800-213-4445', 'Client': 'Client #1', 'Name': 'Joe', 'Address': '123 Fake St.'} 

現在如果你有36個項目,所有你需要的是一個36個鍵的列表。

+0

問題是,我有太多的值要像第一個例子那樣做,如果我嘗試,我會得到以下錯誤:「ValueError:太多值解壓縮」 –

+0

@ Luiz.brsp:你是怎麼試着調用它的?這意味着你試圖給它6或7個元素而不是5 – Claudiu

+0

其實這是一個列表的列表,每個列表有36個'項目'。 (謝謝你的關注!) –

1

提供了「線」是列表的列表,你可以把它變成dictionnaries的列表,像這樣:

clientList = [] 
for line in lines: 
    clientList.append({'Client':line[0], 
         'Name':line[1], 
         'Phone':line[2], 
         'Address':line[3], 
         'Email':line[4]}) 
0

一個開始:

lines = [client, name, phone, address, email, 
     client2, name2, phone2, address2, email2, 
     client3, name3, phone3, address3, email3] 

linesD = {entry: entry for entry in lines} 
0

你不能讓一個與他們所有的單字典,但你可以做一個字典的列表 - 這裏是我該怎麼做:

lines = [ 
    client, name, phone, address, email, 
    client2, name2, phone2, address2, email2, 
    client3, name3, phone3, address3, email3, 
] 

keys = ('Client', 'Name', 'Phone', 'Address', 'Email') 

clients = [dict(zip(keys, lines[i:i+5])) for i in xrange(0, len(lines), 5)] 
0

導致您的數據是不是很好格式化,我改變了一點...

import pandas as pd 
... 
lines = [ 
    [client, name, phone, address, email], 
    [client2, name2, phone2, address2, email2], 
    [client3, name3, phone3, address3, email3]] 
fields=["Client", "Name", "Phone", "Address", "Email"] 
s = pd.DataFrame(lines, columns=fields) 
# choose one u want: 
print(list(s.T.to_dict().values()) 
print(s.to_dict(outtype='list')) 
print(s.T.to_dict())