如何将yfinance下载的股票数据以股票代码为键存入字典?
解决yfinance股票数据字典按代码访问的问题
正确代码实现
直接遍历股票代码列表,用代码本身作为字典的键即可,不需要多余的索引操作:
import yfinance as yf # 你的股票代码数组 ticker_list_1 = ['A', 'AAP', 'AAPL', 'ABB', 'ABBV', 'ABC', 'ABEV', 'ABMD', 'ABNB'] xrz_data = {} # 遍历每个股票代码,用代码作为键存入字典 for ticker in ticker_list_1: data = yf.download(ticker, start="2019-01-01", end="2022-10-20") xrz_data[ticker] = data
如果需要跟踪下载进度(比如打印第几个),可以保留enumerate但依然用代码当键:
import yfinance as yf ticker_list_1 = ['A', 'AAP', 'AAPL', 'ABB', 'ABBV', 'ABC', 'ABEV', 'ABMD', 'ABNB'] xrz_data = {} for idx, ticker in enumerate(ticker_list_1): data = yf.download(ticker, start="2019-01-01", end="2022-10-20") xrz_data[ticker] = data # 可选:打印进度 # print(f"已完成第{idx+1}只股票:{ticker}")
原代码及尝试的问题说明
- 原代码用
enumerate的索引i作为字典键,导致只能通过数字访问,这是你不需要的行为。 - 原代码中用
len作为循环变量名,这会覆盖Python内置的len()函数,属于不良编码习惯,建议改用ticker这类清晰的变量名。 - 你之前尝试的
xrz_data[i].values = data完全错误:此时字典xrz_data中还没有键为i的条目,直接访问会触发KeyError;而且values是字典的内置属性,不能这么赋值。
验证
下载完成后,直接通过股票代码访问数据,比如:
# 获取苹果股票数据 aapl_data = xrz_data['AAPL'] print(aapl_data.head())
内容的提问来源于stack exchange,提问作者Niko
相关产品推荐
相关产品推荐

