如何将值添加到存储为字典值的列表中?

我有一本空字典,需要根据股票代码提取行业信息。然后,我想将同一行业下的所有股票添加到以行业为键的列表中。


例如,最终结果如下所示:


{'technology': ['AAPL', 'ADBE'], 'Consumer Cyclical': ['TSLA', 'UA']}

这是我一直在努力但没有成功的事情:


import yfinance as yf


tickers = ['AAPL', 'ADBE', 'AMD', 'AMAT', 'AMZN', 'ANF',

                    'APA', 'BA', 'BABA', 'BBY', 'BIDU', 'BMY', 'BRX', 'BZUN',

                    'C', 'CAT', 'CLF', 'CMCSA', 'CMG', 'COST', 'CRM', 'CVX',

                    'DE', 'EBAY', 'FB', 'FCX', 'FDX', 'FSLR', 

                    'GILD', 'GM', 'GME', 'GOOG','GPRO', 'GS',  'HAL', 'HD',

                    'HIG', 'HON', 'IBM', 'JCPB', 'JD', 'JPM', 'LULU', 'LYG', 

                    'MA', 'MCD', 'MDT', 'MS', 'MSFT','MU', 'NEM', 'NFLX',

                    'NKE','PBR', 'QCOM', 'SLB', 'SNAP', 'SPG', 'TSLA', 'TWTR',

                    'TXN', 'UA', 'UAL', 'V', 'VZ' 'X', 'XLNX', 'ZM']

sector_dict = dict()

for ticker in tickers:

    try:

        sector = yf.Ticker(ticker).info['sector']

        sector_dict[sector].update(ticker)



    except:

        sector_dict.update({'no sector':[ticker]})

下面只给了我一本空字典。有人看出问题出在哪里吗?


qq_花开花谢_0
浏览 78回答 2
2回答

守着一只汪

假设您需要的信息是从 API 调用返回的 - 下面的代码可能适合您。import yfinance as yffrom collections import defaultdicttickers = ['AAPL','ADBE']sector_dict = defaultdict(list)for ticker in tickers:&nbsp; try:&nbsp;&nbsp; &nbsp; sector_dict[yf.Ticker(ticker).info['sector']].append(ticker)&nbsp; except Exception as e:&nbsp; &nbsp; print(f'Failed to get ticker info for {ticker}')print(sector_dict)输出defaultdict(<class 'list'>, {'Technology': ['AAPL', 'ADBE']})

MYYA

您应该始终避免包罗万象的异常。update您最初的示例掩盖了不是列表方法的事实。当您为像这样的Python字典添加下标时sector_dict[ticker],我们现在讨论的是与键关联的值ticker。在本例中是一个列表。另外更新也不是这样使用的,所以我认为它掩盖了第二个错误。它的用法是用另一个字典或可迭代对象更新一个字典。不更新现有条目。最后,该try子句应尽可能小,以便确定错误来自何处,或者至少可以保证不会出现像本例这样的冲突异常。我认为这就是为什么您的列表在我之前的解决方案中仅返回最后一个股票代码,因为yf.Ticker导致 aKeyError并KeyError调用异常而不是最后一个。我是这样做的:sector_dict = {'no sector':[]}for ticker in tickers:&nbsp; &nbsp; try:&nbsp; &nbsp; &nbsp; &nbsp; sector = yf.Ticker(ticker).info['sector']&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; except KeyError:&nbsp; &nbsp; &nbsp; &nbsp; sector_dict['no sector'].append(ticker)&nbsp; &nbsp; try:&nbsp; &nbsp; &nbsp; &nbsp; sector_dict[sector].append(ticker)&nbsp; &nbsp; except KeyError:&nbsp; &nbsp; &nbsp; &nbsp; sector_dict[sector] = [ticker]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python