我有.txt文件示例。这意味着名字:金钱
Muumimamma:3.3
Pikku Myy:1.3
Muumimamma:2.9
Niiskuneiti:2.2
Muumimamma:8.9
Muumipappa:3.9
Niiskuneiti:3.8
Muumipeikko:2.2
Muumimamma:1.3
Niiskuneiti:2.0
Muumipeikko:3.2
Muumimamma:5.0
我想制作字典,其中名称是关键字,金钱是有价值的,如果文件中不止一次,则应将钱加在一起。所以我的最后一本字典应该是这样的:
{'Muumipappa': 3.9, 'Pikku Myy': 1.3, 'Niiskuneiti': 8.0, 'Muumipeikko': 5.4, 'Muumimamma': 21.4}
谢谢!
答案 0 :(得分:0)
使用defaultdict
中的collections
与float
一起使用doc中有int
的示例
from collections import defaultdict
import re
d = defaultdict(float)
with open("money.txt", "r") as f:
for line in f:
name, money = re.split(":",line[:-1])
d[name] += float(money)
答案 1 :(得分:0)
collections.Counter
总结您想要的方式:
from collections import Counter
with open('/tmp/myfile.txt') as f:
d = sum((Counter({k: float(v) for k, v in [line.split(':')]}) for line in f), Counter())
d = dict(d)
请注意,计数器实例已经是dict的子类,因此根据您的使用情况,可能不一定需要行d = dict(d)
。
答案 2 :(得分:0)
因此我们不允许使用导入。我想出了这个想法,你觉得怎么样?
testi = open(file, "r")
lista = testi.readlines()
testi.close()
dict = {}
for arvo in lista:
arvo = arvo.strip()
type = arvo.split(":")
if type[0] in dict:
dict[type[0]] += float(type[1])
else:
dict[type[0]] = float(type[1])