2017-08-18 102 views
0

Python和編程新手。我如何使用包含兩個API的for循環創建一個字典(其中一個可以從P 500公司的字典中提取股票代碼符號,另外一個則是yahoo_finance以提取相應的市場數據),另外還可以更新以替換現有數據。在包含API的for循環中動態創建字典

import sp500 
from yahoo_finance import Share 

tickers = {} 

for d in sp500: 
    for k, v in tickers.items(): 
     retrieveticker = d['symbol'] 
     yahoodata = Share(retrieveticker) 
     dict = {retrieveticker,yahoodata.get_market_cap(retrieveticker)} 
     tickers.update(dict) 

print tickers 

換句話說。主要目標是在sp500公司名單下找到相應的市場份額,並創建以ticker爲關鍵詞,以市值作爲其價值的字典。

謝謝先進。

+3

您正在創建一個集合,而不是一個字典...... – Dekel

回答

0

我相信你想做的事就是你解壓項目到{}因此它會創建一個字典,而不是一組,像這樣:

yahoo = {'key': 'value'} 
retrieveticker = {'key2': 'value2'} 
a_dict = {**retrieveticker, **yahoo} 
a_dict 
{'key': 'value', 'key2': 'value2'} 

此外,不要對一個變量名使用dict

我沒有yahoo_finance,但是這是它會是什麼樣子在你的代碼:

for d in sp500: 
    for k, v in tickers.items(): 
     retrieveticker = d['symbol'] 
     yahoodata = Share(retrieveticker) 
     a_dict = {**retrieveticker, **yahoodata.get_market_cap(retrieveticker)} 
     tickers.update(a_dict) 

假設retrievetickeryahoodata.get_market_cap(retrieveticker)都是類型的字典。

+0

感謝您的快速響應。 retrieveveticker將是符號...所以讓我們說AAPL(從sp500字典中提取)。我會在相應的API調用中使用該代碼。理想情況下,我希望字典將所有500家標準普爾公司作爲關鍵字和相應的市場上限作爲價值。 – Muricuda

+1

@Cory我想你是指tickers.update(a_dict)! –

+0

哎呀,我的確如此。固定。 –

0

我相信你只是想要將其值添加到字典中是這樣的:

tickers[retrieveticker] = yahoodata.get_market_cap(retrieveticker) 

相反,你必須在你的for循環的每個迭代結束的兩行。