Mon code est suivante:Python, la probabilité
with open("test.txt") as f_in:
for line in f_in:
for char in line:
frequencies[char] += 1
list= [(count, char) for char, count in frequencies.iteritems()]
Ce code ouvert test.txt, lisez chaque ligne et de signer "liste" en forme par exemple: [(3, 'a'), .........]. Cela signifie que dans un fichier texte entier, il y a trois a et ainsi de suite ...
Ce que je dois est de calculer pour ce numéro, au lieu , j'ai besoin [3/nombre de tous les signes]. Donc je n'ai pas besoin de nombre de signes comme par exemple a dans le texte, mais j'ai besoin de probabilité de signe a.
Donc, si dans le texte (test.txt) il y aura "aaab", j'ai besoin sortie de "liste": [(0,75, 'a'), (0,25, 'b')]
Un grand merci pour votre aide.
EDIT2
import collections
frequencies = collections.defaultdict(int)
with open("test.txt") as f_in:
for line in f_in:
for char in line:
frequencies[char] += 1
total = float(sum(frequencies.keys()))
verj= [(count/total, char) for char, count in frequencies.iteritems()]
Ce ne fonctionne pas, donnez-moi l'erreur:
total = float(sum(frequencies.keys()))
TypeError: unsupported operand type(s) for +: 'int' and 'str'
Je suppose que vous êtes 'initialiser frequencies' pour les valeurs '0'? Pensez à utiliser [collections.defaultdict] (http://docs.python.org/library/collections.html#collections.defaultdict). – delnan
Cela devrait être 'fréquences.values ()' sur la ligne dans l'édition, pas 'fréquences.keys()'. Après tout, ce sont les valeurs de cette dict où le nombre d'occurrences est stocké. (Les clés stockent les symboles de caractères.) –