我有一个文件'test.txt',看起来像:
emma 5
peter 9
emma 2
peter 10
peter 7
aps 25
emma 1
然后我应该以某种方式用相同的键来汇总值,所以答案是:
aps 25
emma 8
peter 26
我设法写了一个代码
d = {}
with open('game.txt') as f:
for line in f:
(key, val) = line.split()
if key in d:
d[key].append(val)
else:
d[key] = [val]
for x, v in d.items():
print (x,v)
但它给了我:
aps ['25']
peter ['9', '10', '7']
emma ['5', '2', '1']
因此我无法将这些值汇总在一起。 提前致谢
答案 0 :(得分:1)
您无法对这些值求和,因为它们是字符串。如果将它们转换为整数,您将能够对它们求和:
for x, v in d.items():
print(x, sum(int(val) for val in v))
您可以使用defaultdict
:
from collections import defaultdict
d = defaultdict(int)
with open('game.txt') as f:
for line in f:
key, val = line.split()
d[key] += int(val)
for x, v in d.items():
print (x, v)
使用defaultdict(int)
,您无需检查字典中是否已存在密钥。如果它不存在,它将被添加并被赋予0
的值。
答案 1 :(得分:0)
您可以直接创建常规词典,如下所示:
d = {}
with open('game.txt') as f:
for line in f:
name, value = line.split()
d[name] = d.get(name, 0) + int(value)
for x, v in d.items():
print (x, v)