如何用字典实现TXT文件中各组数值的统计求和?求最优方案
用Python字典统计TXT文件中分组数值总和的最优实现
嘿,这个需求用字典来处理完全是对症下药!我给你整理了两种简洁高效的实现方案,都是基于字典的,你可以根据自己的习惯选:
方案一:用collections.defaultdict(推荐,代码更简洁)
defaultdict可以自动为不存在的键设置默认值(这里默认是0),省去了判断键是否存在的步骤,代码更清爽:
from collections import defaultdict # 初始化字典,用于存储每个class的总和 class_sum = defaultdict(int) # 打开目标TXT文件 with open('your_file.txt', 'r') as f: for line in f: # 去掉每行前后的空白字符(包括换行、空格) stripped_line = line.strip() # 跳过空行 if not stripped_line: continue # 拆分每行内容,得到各部分 parts = stripped_line.split() # 提取class名称和数值(注意parts的索引:parts[1]是class编号,parts[3]是数值) class_name = parts[1] value = int(parts[3]) # 累加数值 class_sum[class_name] += value # 打印结果 print("各分组数值总和:") for cls, total in class_sum.items(): print(f"class {cls}: {total}")
方案二:用普通字典(不需要导入模块)
如果不想额外导入模块,用普通字典也能实现,只是需要多一步判断键是否存在:
class_sum = {} with open('your_file.txt', 'r') as f: for line in f: stripped_line = line.strip() if not stripped_line: continue parts = stripped_line.split() class_name = parts[1] value = int(parts[3]) # 判断class是否已在字典中,不存在则初始化为0 if class_name not in class_sum: class_sum[class_name] = 0 class_sum[class_name] += value # 打印结果 for cls, total in class_sum.items(): print(f"class {cls}: {total}")
关键步骤解释:
- 过滤空行:用
strip()去掉每行的空白后,判断是否为空字符串,是的话直接跳过,避免处理无效行。 - 拆分行内容:
split()默认按任意空白拆分,不管行里有多少空格都能正确拆分出class、编号、value、数值这几个部分。 - 数值累加:两种方案都是通过字典的键(class编号)来对应存储总和,每次读取到有效行就把数值加到对应键的值上。
运行这两段代码后,针对你给出的示例TXT内容,都会得到这样的结果:
各分组数值总和: class 1: 45 class 2: 30
内容的提问来源于stack exchange,提问作者user7491985
相关产品推荐
相关产品推荐

