Python中如何存储多只股票OHLC数据避免覆盖?
解决多只股票OHLC数据存储不覆盖的问题
你的核心问题是用单个全局变量存储数据,每次调用函数都会覆盖原有值。要同时保存多只股票的数据,需要用带标识的结构化存储,比如字典或者类,以下是两种实用方案:
方案一:全局字典存储(简单直接)
用字典的键对应股票代码,值存储该股票的OHLC数据,这样每只股票的数据都有独立的存储位置,不会互相覆盖:
# 初始化全局字典,用于存储所有股票的OHLC数据 stock_data = {} def get_stock_data(symbol): # 假设getdata.symbol返回包含open/high/low/close属性的对象 data = getdata.symbol # 将当前股票的OHLC数据存入字典,键为股票代码 stock_data[symbol] = { 'open': data.open, 'high': data.high, 'low': data.low, 'close': data.close } # 调用示例 get_stock_data("TSLA") get_stock_data("GOOGL") # 访问数据示例 print(stock_data["TSLA"]["high"]) # 输出TSLA的最高价 print(stock_data["GOOGL"]["close"]) # 输出GOOGL的收盘价
方案二:类封装(适合复杂场景)
如果后续需要扩展更多功能(比如数据校验、批量查询),用类来管理数据会更规范:
class StockDataManager: def __init__(self): # 类内部的字典存储数据,避免污染全局命名空间 self.stock_data = {} def fetch_stock_data(self, symbol): data = getdata.symbol self.stock_data[symbol] = { 'open': data.open, 'high': data.high, 'low': data.low, 'close': data.close } def get_stock(self, symbol): # 提供安全的查询方法,不存在时返回None return self.stock_data.get(symbol, None) # 使用示例 data_manager = StockDataManager() data_manager.fetch_stock_data("TSLA") data_manager.fetch_stock_data("GOOGL") # 获取单只股票数据 tsla_data = data_manager.get_stock("TSLA") if tsla_data: print(tsla_data["low"])
两种方案的核心逻辑都是通过股票代码作为唯一标识,把每只股票的OHLC数据独立存储,彻底解决覆盖问题。
内容的提问来源于stack exchange,提问作者Zac
相关产品推荐
相关产品推荐

