You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用字典实现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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:34:04