创建字典以计算 txt 文件中每组的值

Create dictionary to count values per group in a txt file

这可能很容易实现,但我可以想出一个好的实现。我正在尝试对 txt 文件中不同组的值求和。假设我们有一个文件,其中每一行如下:

------------------------
Blank line
class 1 
value 10
------------------------
Blank line
class 2
value 20
------------------------
Blank line
class 1 
value 15
------------------------
Blank line
class 1 
value 20
------------------------
Blank line
class 2
value 10

我想创建一个字典,将 class 设置为键,并将每个键的值的总和设置为字典值。例如,输出应该是:

my_dict = {'class 1': 45, 'class 2': 30}。我之前对数据集进行了检查,发现有 500 个不同的 classes 当然具有不同的值和。我的第一个想法是为此目的使用字典,但不知道这是否是最好的方法。我所做的是为每一行创建一个字典,其中有一个 class 但这样我就有了很多字典,其中一些重复了。但是我可以使用 Counter fucntion from Collenctions 对它们求和,但这绝对不是最好的方法。 有什么建议吗?

使用正则表达式和 defaultdict:

import re
from collections import defaultdict

dct = defaultdict(int)
with open('test.txt') as f:
  data = re.findall(r'(class\s\d+).*\nvalue\s(\d+)', f.read())
  for k, v in data:
    dct[k] += int(v)

print(dct)

输出:

defaultdict(<class 'int'>, {'class1': 45, 'class2': 30})

可以查看正则表达式:(class\s\d+).*\nvalue\s(\d+)

我不得不在 .* 中添加,因为您输入的某些行末尾有随机空格。如果那是复制错误,则不需要它。