1st Text file format .
cake,60
cake,30
tart,50
bread,89
2nd Text file format .
cake,10
cake,10
tart,10
bread,10
我试过的代码。
from collections import defaultdict
answer = defaultdict(int)
recordNum = int(input("Which txt files do you want to read from "))
count = 1
counter = 0
counst = 1
countesr = 0
while recordNum > counter:
with open('txt'+str(count)+'.txt', 'r') as f:
for line in f:
k, v = line.strip().split(',')
answer[k.strip()] += int(v.strip())
count = count+1
counter = counter+1
print(answer)
问题。
I want the dictionary to be {'cake': '100', 'tart': '60', 'bread': '99'}
but it prints like this {'cake': '30', 'tart': '50', 'bread': '89'}
不是将“cake”值与txt文件中的其他蛋糕值相加,而是将其替换为最新值。我该如何解决这个问题。
答案 0 :(得分:2)
您可以使用collections.defaultdict
积累计数:
from collections import defaultdict
answer = defaultdict(int)
with open("file.txt", 'r') as f:
for line in f:
k, v = line.split(',')
answer[k.strip()] += int(v.strip())
# turn values back to string
for k in answer:
answer[k] = str(answer[k])
print(answer)
如果计数都是正数,您可以考虑使用collections.Counter
。
答案 1 :(得分:1)
您可以做的一件有趣的事情是将Counter
加在一起:
import csv
from collections import Counter
with open('file.txt', 'r') as f:
reader = csv.reader(f)
answer = sum((Counter({k: int(count)}) for k, count in reader), Counter())
print(answer)