You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python 如何将股票日期价格列表转为以字符串日期为键的浮点值字典

逐行字符串列表转目标股票字典的实现方案

核心实现逻辑

  • 修正原代码中createdict函数写死读取apple.dat的问题,确保使用用户输入的file_name作为目标文件路径
  • 逐行遍历跳过表头后的文本内容,先清除每行残留的换行符,再按逗号拆分出独立字段
  • 以拆分得到的日期字符串作为字典的顶层键
  • 按文件表头定义的字段顺序,将所有价格类字段转换为float类型,成交量可根据需求转为int或float类型
  • 组装成结构化的字典后返回给主程序

转换完成后的字典结构示例:

{
    "2020-01-02": {
        "Open": 74.059998,
        "High": 75.150002,
        "Low": 73.797501,
        "Close": 75.087502,
        "Adj Close": 74.333511,
        "Volume": 135480400
    },
    "2020-01-03": {
        "Open": 74.287498,
        "High": 75.144997,
        "Low": 74.125,
        "Close": 74.357498,
        "Adj Close": 73.61084,
        "Volume": 146322800
    }
}

实现注意事项

  • 处理每行文本时使用strip()清除两端的空白字符,避免残留的换行、空格导致数值类型转换报错
  • 注意不要使用Python内置类型名(比如list、dict)作为变量名,避免覆盖内置类型导致后续代码报错
  • 如果不需要按字段名做嵌套映射,也可以将转换后的数值按顺序组成列表作为对应日期的值,比如简化结构:"2020-01-02": [74.059998, 75.150002, 73.797501, 75.087502, 74.333511, 135480400],这种结构遍历效率更高,适合只需要按顺序读取数值的场景

完整可运行代码

def createdict(file_name):
    stock_dict = {}
    with open(file_name, 'r') as f:
        # 读取全部行并跳过首行表头
        all_lines = f.readlines()[1:]
        for line in all_lines:
            # 清除行尾换行符并拆分字段
            parts = line.strip().split(',')
            date_key = parts[0]
            # 按字段顺序转换数值类型
            stock_dict[date_key] = {
                "Open": float(parts[1]),
                "High": float(parts[2]),
                "Low": float(parts[3]),
                "Close": float(parts[4]),
                "Adj Close": float(parts[5]),
                "Volume": int(parts[6])
            }
    return stock_dict

def main():
    print("Welcome to the Stock Price Program")
    print()
    file_name = input("Enter the data file name: ")
    stock_data = createdict(file_name)
    print(stock_data)

if __name__ == "__main__":
    main()

内容的提问来源于stack exchange,提问作者qwvst

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.23 21:54:04