2015-12-17 31 views
0

我有一個包含列表dictionaries-Python的字典清單內(拉單獨的值)

[{'Name of Business' : 'Amazon', 'Contact Name' : 'Jeff Bezos', 'Email' : '[email protected]'}, 
{ {'Name of Business' : 'Microsoft', 'Contact Name' : 'Bill Gates', 'Email' : '[email protected]'}] 

我會在稍後需要保存業務,聯繫人姓名等每個名稱到一個變量或有一個簡單的方法來呼籲他們重新使用。

我發現,使用類似

for x in dict_list: 
    print x["Client"], x['Contact Name'], x['Email'] 

給我的所有數據的打印輸出:
亞馬遜貝索斯[email protected]
微軟比爾·蓋茨[email protected]

但如果我只想從第一個條目中獲取信息,該怎麼辦?
如果我想將每個字典條目的數據保存到一個單獨的變量,該怎麼辦?

使用

first_entry = dict_list[0] 
print first_entry["Client"], first_entry['Contact Name'], first_entry['Email'] 

但必須有某種方式來做到這一條線,而不首先創建另一個變量?

感謝您的幫助!

回答

1

只是不創建變量:

print dict_list[0]["Client"], dict_list[0]['Contact Name'], dict_list[0]['Email'] 

或循環:

idx = [1] 
for i in idx: 
    print dict_list[i]["Client"], dict_list[i]['Contact Name'], dict_list[i]['Email'] 
+0

謝謝!我讚賞兩種不同的方式來做到這一點。 – Shiroslullaby

1
print dict_list[0]["Client"], dict_list[0]['Contact Name'], dict_list[0]['Email'] 
+0

謝謝我知道這可以做,但有麻煩搞清楚確切的語法。 – Shiroslullaby

1

你的問題是你使用存儲數據結構。我會建議使用熊貓數據幀根據你所需要的操作來處理你的數據:

import pandas as pd 

df = pd.DataFrame(l) 
#Out[5]: 
# Contact Name    Email Name of Business 
#0 Jeff Bezos  [email protected]   Amazon 
#1 Bill Gates [email protected]  Microsoft 

每個字典條目對應於科拉姆。 您可以訪問的第一項爲系列:

df['Name of Business']   
#Out[9]: 
#0  Amazon 
#1 Microsoft 
#Name: Name of Business, dtype: object 

或列表:

df['Name of Business'].tolist() 
#Out[8]: ['Amazon', 'Microsoft'] 
+0

有趣。我將不得不考慮熊貓。感謝您的答覆! – Shiroslullaby

+0

它會避免你很多無用的循環和理解列表:) –

1

如果我想從每個字典條目以單獨的變量保存數據?

您可以使用列表理解或map()來解決這個問題。對於第一個列表元素:

client, contact, email = map(dict_list[0].get, ("Client", "Contact Name", "Email")) 
+0

感謝我相當新的Python,並會進一步看看地圖命令! – Shiroslullaby