Mein Code ist weiter:Python, Wahrscheinlichkeit
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()]
Dieser Code offen test.txt, jede Zeile und "Liste" in Form zum Beispiel unterzeichnen lesen: [(3, 'a'), .........]]. Dies bedeutet, dass in ganzer Textdatei gibt drei ein und so weiter ...
Was ich brauche, ist für diese Zahl zu berechnen, statt 3, ich brauche [3/Anzahl aller Zeichen]. Also brauche ich keine Anzahl von wie viele Zeichen zum Beispiel ein ist im Text, aber ich brauche die Wahrscheinlichkeit von Zeichen a.
Also, wenn in Text (test.txt) es wird "aaab", ich brauche Ausgabe von "Liste": [(0,75, 'a'), (0,25, 'b')]
Vielen Dank für Ihre Hilfe.
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()]
Dies funktioniert nicht, gib mir Fehler:
total = float(sum(frequencies.keys()))
TypeError: unsupported operand type(s) for +: 'int' and 'str'
Ich nehme an, Sie initialisieren 'frequencies' auf '0' Werte? Erwägen Sie die Verwendung von [collections.defaultdict] (http://docs.python.org/library/collections.html#collections.defaultdict). – delnan
Das sollte 'frequencies.values ()' auf der Zeile im Edit sein, nicht 'frequency.keys()'. Schließlich sind es die Werte dieses Diktats, in denen die Anzahl der Vorkommen gespeichert ist. (Die Schlüssel speichern die Zeichensymbole.) –