具有多个具有不同值的相同键的字典python

2024-06-16 11:03:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个.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

我想做一个字典,名字是键,钱是值,如果文件中有不止一次的钱应该加在一起。所以我最后的字典应该是这样的:

^{pr2}$

谢谢你!在


Tags: 文件txt名称字典名字例子pr2myy
3条回答

所以我们不允许使用进口。我想出了这个主意,你觉得怎么样?在

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])

collections中的defaultdict与{}一起使用(在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)

一个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)

注意,counter实例已经是dict的一个子类,因此根据您的用例,d = dict(d)行可能并不真正必要。在

相关问题 更多 >