我正在尝试从文件中访问类似的行,然后对其值应用总和。
这是我的输入文件格式:
K1 20
K2 23
K3 24
K3 14
K3 10
K2 5
所以,我的目标是创建一个输出文件,为每条记录创建一个值的总和:
K1 20
K2 28
K3 48
例如第一个块
K1 20
K2 23
K3 24
第二块
K3 24
K2 5
现在我迷失了如何将它们全部合并并继续使用新值更新记录。
合并后的新值将是
K1 20
K2 28
K3 48
答案 0 :(得分:1)
以下内容应完成所需的功能。
from collections import Counter
output = Counter()
with open("input.txt") as file:
for line in file.read().split('\n'):
if line:
key, value = line.split()
output[key] += int(value)
with open("output.txt", 'w+') as file:
for key, value in output.items():
file.write("{key} {value}\n".format(key=key, value=value))
答案 1 :(得分:0)
这是一个大文本文件> 20GB。所以我不能立刻把整个东西存入记忆中。
Counter
仍然会将其保留在内存中。如果您在受限制的环境中运行,这对您没有任何好处。我的建议:
sort
发送它。 (我假设你的FS有空间)