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
相关产品推荐
相关产品推荐

