如何提取姓名首字母生成字典并合并文件数据计算日平均值
问题与实现方案
需求概述
已知两个文件的内容如下:
file1 内容:
Name, day1 Omi Aiz,90 Carin Jack,92 Swit Han,88file2 内容:
Name, Day2 Omi Aiz, 20 Carin Jack,30 Swit Han,40
需要完成两个任务:
- 将数据合并为包含分数列表的字典,格式如下:
{'OA':[90,20],'CJ':[92,30],'SH':[88,40]} - 基于上述字典计算每人两天分数的平均值,生成新字典:
{'OA':55,'CJ':61,'SH':64}
实现代码(Python)
假设已经读取两个文件的内容到列表lines1(对应file1)和lines2(对应file2)中,以下是具体实现:
1. 合并为目标字典
# 处理file1,提取姓名缩写与对应分数 data1 = {} for line in lines1[1:]: # 跳过表头行 name_str, score_str = line.strip().split(',') # 生成姓名缩写:拆分姓名后取每个单词首字母大写拼接 initials = ''.join([word[0].upper() for word in name_str.split()]) data1[initials] = int(score_str.strip()) # 处理file2,同样提取数据 data2 = {} for line in lines2[1:]: name_str, score_str = line.strip().split(',') initials = ''.join([word[0].upper() for word in name_str.split()]) data2[initials] = int(score_str.strip()) # 合并两个字典,生成包含两天分数的列表 merged_dict = {key: [data1[key], data2[key]] for key in data1} print(merged_dict)
运行后输出:
{'OA': [90, 20], 'CJ': [92, 30], 'SH': [88, 40]}
2. 计算平均值生成新字典
基于上面的merged_dict,用字典推导式快速计算平均值:
avg_dict = {key: sum(values) // len(values) for key, values in merged_dict.items()} print(avg_dict)
运行后输出:
{'OA': 55, 'CJ': 61, 'SH': 64}
内容的提问来源于stack exchange,提问作者hongyin
相关产品推荐
相关产品推荐

