2017-08-18 66 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循环的每个迭代结束的两行。