Python新手求助:从文本文件生成指定格式数组
解决方法
你的代码问题分析
- 结构初始化错误:你需要的是字典结构,但把
my_output初始成了列表,而且append的用法完全错了——列表的append是实例方法,得写成my_output.append(xxx),不能直接赋值my_output = append(id)。 - 未按ID分组:没有实现“以ID为键、对应数据列表为值”的核心逻辑,只是单纯想把行数据塞进列表。
- 数据类型未转换:读取到的所有内容都是字符串,没有转换成要求的
int、float类型。
正确代码实现
# 初始化空字典,用来按ID存储对应的数据列表 my_output = {} with open("textile.txt") as f: for line in f: # 去掉换行符,按逗号分割每行数据 raw_data = line.strip().split(',') # 按照要求转换各字段类型 record_id = int(raw_data[0]) date = raw_data[1] temperature = float(raw_data[2]) # 剩下的字段全部转成int rest = [int(item) for item in raw_data[3:]] # 组装成一条符合格式的记录 single_record = [date, temperature] + rest # 按ID分组存储:如果ID不在字典里,先创建空列表 if record_id not in my_output: my_output[record_id] = [] my_output[record_id].append(single_record) # 打印结果 print(my_output)
代码解释
- 用字典
my_output替代列表,专门用来实现“ID: [记录列表]”的结构。 - 逐行读取文件后,拆分并转换每个字段的类型,严格匹配你要求的
int(ID)、str(日期)、float(体温)、int*5的类型组合。 - 通过判断ID是否存在于字典中,实现分组:不存在就新建空列表,存在就直接追加记录。
运行后得到的结果就是你期望的字典结构,每个ID对应其所有的有效记录。
内容的提问来源于stack exchange,提问作者Barry Veerkamp
相关产品推荐
相关产品推荐

