2015-04-09 1 views
1

Je dispose d'un fichier texte qui a la structure suivante:Turning fichier texte au dictionnaire

mom:2 
dad:3 
mom:4 
dad:2 
me:4 

Et je dois faire un dictionnaire qui affiche chaque nom une seule fois, mais en ajoutant les valeurs numériques ensemble. Dans ce cas, il ressemblerait à ceci:

{dad':5, 'me':4, 'mom':6} 

Comment j'aborder ce problème? J'ai essayé

d = {} 
    try: 
    file = open(file.txt, "r") 
    for line in file: 
     (a, b) = line.split(":") 
     d[a] = float(b) 
    except IOError: 
    print() 

mais je ne l'ai pas trouvé un moyen de compter les valeurs.

+4

Est-ce que ce travail est fait? Qu'avez-vous essayé jusqu'à présent? – ventsyv

+0

Je peux voir ce que vous voulez réaliser, mais un dictionnaire ne semble pas être la structure de données que vous voudriez utiliser ici, car un dictionnaire n'a pas d'ordre. – SmeltQuake

+2

Envisagez de publier un [MCVE] (http://stackoverflow.com/help/mcve) –

Répondre

1
with open('file.txt', 'r') as f:               
    fp = f.readlines()    

t = [l.strip().split(':') for l in fp if l != '\n']                             
d = {}                     
for l in t:                   
    d[l[0]] = d.setdefault(l[0], 0) + int(l[1])