亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何將值添加到存儲為字典值的列表中?

如何將值添加到存儲為字典值的列表中?

qq_花開花謝_0 2023-10-31 10:57:07
我有一本空字典,需要根據股票代碼提取行業信息。然后,我想將同一行業下的所有股票添加到以行業為鍵的列表中。例如,最終結果如下所示:{'technology': ['AAPL', 'ADBE'], 'Consumer Cyclical': ['TSLA', 'UA']}這是我一直在努力但沒有成功的事情:import yfinance as yftickers = ['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]})下面只給了我一本空字典。有人看出問題出在哪里嗎?
查看完整描述

2 回答

?
守著一只汪

TA貢獻1872條經驗 獲得超4個贊

假設您需要的信息是從 API 調用返回的 - 下面的代碼可能適合您。


import yfinance as yf

from collections import defaultdict

tickers = ['AAPL','ADBE']

sector_dict = defaultdict(list)

for ticker in tickers:

  try: 

    sector_dict[yf.Ticker(ticker).info['sector']].append(ticker)

  except Exception as e:

    print(f'Failed to get ticker info for {ticker}')

print(sector_dict)

輸出


defaultdict(<class 'list'>, {'Technology': ['AAPL', 'ADBE']})


查看完整回答
反對 回復 2023-10-31
?
MYYA

TA貢獻1868條經驗 獲得超4個贊

您應該始終避免包羅萬象的異常。


update您最初的示例掩蓋了不是列表方法的事實。當您為像這樣的Python字典添加下標時sector_dict[ticker],我們現在討論的是與鍵關聯的值ticker。在本例中是一個列表。


另外更新也不是這樣使用的,所以我認為它掩蓋了第二個錯誤。它的用法是用另一個字典或可迭代對象更新一個字典。不更新現有條目。


最后,該try子句應盡可能小,以便確定錯誤來自何處,或者至少可以保證不會出現像本例這樣的沖突異常。


我認為這就是為什么您的列表在我之前的解決方案中僅返回最后一個股票代碼,因為yf.Ticker導致 aKeyError并KeyError調用異常而不是最后一個。


我是這樣做的:


sector_dict = {'no sector':[]}

for ticker in tickers:

    try:

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

    except KeyError:

        sector_dict['no sector'].append(ticker)

    try:

        sector_dict[sector].append(ticker)

    except KeyError:

        sector_dict[sector] = [ticker]


查看完整回答
反對 回復 2023-10-31
  • 2 回答
  • 0 關注
  • 181 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號