如何用Python将指定格式文本文件转换为嵌套字典?
用Python将文本文件转换为嵌套字典
需求说明
有如下格式的文本文件内容:
subjects ENGLISH, MATHS, SCIENCE
Joe, A, A, B
Dave, A, B, C
Will, D, D, E
需要将其转换为如下结构的嵌套字典:
{'Joe':{'ENGLISH':'A','MATHS':'A','SCIENCE':'B'},'Dave':{'ENGLISH':'A','MATHS':'B','SCIENCE':'C'},'Will':{'ENGLISH':'D','MATHS':'D','SCIENCE':'E'}}
实现代码
可以通过以下代码完成转换操作:
# 读取目标文本文件(替换为你的文件路径) with open('scores.txt', 'r') as file: # 过滤空行并去除每行首尾空白 valid_lines = [line.strip() for line in file if line.strip()] # 提取科目名称列表 subjects_line = valid_lines[0] subjects = subjects_line.split()[1].split(', ') # 构建嵌套字典 student_scores = {} for line in valid_lines[1:]: # 分割每行内容,去除每个元素的空白 elements = [item.strip() for item in line.split(',')] student_name = elements[0] scores = elements[1:] # 将科目与成绩配对,生成子字典 student_scores[student_name] = dict(zip(subjects, scores)) # 输出结果 print(student_scores)
关键步骤说明
- 文件读取与预处理:使用
with语句安全读取文件,同时过滤掉空行,避免处理无效内容 - 科目提取:从第一行中拆分出科目名称,作为子字典的键
- 字典构建:遍历每行学生数据,拆分出姓名和对应成绩,利用
zip()函数将科目与成绩快速配对,生成每个学生的成绩子字典,最终整合为外层字典
内容的提问来源于stack exchange,提问作者Anthillion
相关产品推荐
相关产品推荐

