如何将文本文件中的姓名分数数据转换为Python字典
代码调整方案
你原代码存在的问题如下:
- 变量
dt_stu初始化为列表([]),列表仅支持下标索引访问,不支持键值对赋值,需改为字典类型初始化{} line.split([0:9])语法错误,split()方法接收的参数为分隔符,默认按任意空白字符拆分,你写的切片语法完全不符合方法入参要求- 没有处理文件资源关闭逻辑,容易引发资源泄漏风险
- 读取到的分数为字符串格式,无法直接参与数值计算,建议转换为浮点数更实用
你可以直接使用以下调整后的代码:
dt_stu = {} # 使用with上下文管理器自动管理文件句柄,操作完成后自动关闭文件 with open(r"C:\Users\kwokw\Downloads\student_avg.txt", 'r', encoding='utf-8') as infile: for line in infile: # 先去除行首尾的换行、空格等空白字符,再按空白拆分 parts = line.strip().split() # 前N-1个元素拼接为完整姓名作为键,最后一个元素转浮点数作为分数值 stu_name = ' '.join(parts[:-1]) avg_score = float(parts[-1]) dt_stu[stu_name] = avg_score print(dt_stu)
运行后输出的字典结果为:
{'Paul Velma': 63.0, 'Mcgee Kibo': 71.0, 'Underwood Louis': 62.75, 'Clemons Phyllis': 57.5}
内容的提问来源于stack exchange,提问作者Barry
相关产品推荐
相关产品推荐

