Seite 1 von 1
Ein Wert aus der Dictionary auslesen ?
Verfasst: Donnerstag 26. April 2012, 11:20
von Disaster
Hallo ,
Programm: Ich habe ein Programm geschrieben welches ein Text-Datei einliest und die einzelnen Buchstaben in eine Dictionary mit der Häufigkeit als Wert speichert.
Da Dictionary's nicht in Zellengespeichert werden und die i.wie darein kommen

wollte ich Fragen wie ich auf die Werte und nicht auf die Key prüfe damit ich die Buchstaben untereinander nach Häufigkeit ausgeben kann. :K
Beispiel :
[
in diesen Fall möchte ich z.B , das Item c (weil das den größten Wert hat) ausprinten.
Ich bedanke mich schon Vorraus

Re: Ein Wert aus der Dictionary auslesen ?
Verfasst: Donnerstag 26. April 2012, 11:33
von webspider
Code: Alles auswählen
>>> d = {"a": 9001, "b": 4, "c": 10}
>>> from operator import itemgetter
>>> max(d.iteritems(), key=itemgetter(1))
('a', 9001)
>>> max(d.iteritems(), key=itemgetter(1))[0]
'a'
Re: Ein Wert aus der Dictionary auslesen ?
Verfasst: Donnerstag 26. April 2012, 11:41
von Disaster
iteritems() existiert doch garnicht oder tut es Sie doch ? :K
Fehlermeldung : AttributeError: 'Klasse' object has no attribute 'iteritems'
und itemgetter genauso nicht :/
und wofür steht die [0] am ende ?
Re: Ein Wert aus der Dictionary auslesen ?
Verfasst: Donnerstag 26. April 2012, 11:47
von webspider
Funktioniert denn der von mir gepostete Beispiel-Code im interaktiven Modus? Was soll dieses 'Klasse'-Objekt sein?
Falls du wirklich nicht weißt, was mit der Index-Schreibweise (also ``a[0]``) gemeint ist, solltest du besser das offizielle Python-Tutorial (bzw. die Alternativen) durcharbeiten, denn das deutet auf erhebliche Wissenslücken hin.
Re: Ein Wert aus der Dictionary auslesen ?
Verfasst: Donnerstag 26. April 2012, 11:49
von Disaster
Es hat sich alles erledigt mir ist jetzt nicht mehr klar wofür die (1) steht ? :K
Re: Ein Wert aus der Dictionary auslesen ?
Verfasst: Donnerstag 26. April 2012, 12:27
von sma
Code: Alles auswählen
s = u"""
Ich finde ehrlich gesagte das Beispiel von websider zu kompliziert.
Aus einem dict kann man die Liste aller Paare extrahieren. Jede Liste
lässt sich sortieren, indem man eine Funktion angibt, die aus einem
Listenelement einen Sortierschlüssel berechnet. In unserem Fall soll
dies der zweite Wert in jedem Paar sein.
"""
counts = {}
for c in s:
# mir ist collections.defaultdict bekannt, so ist es aber explizit
# mir ist auch setdefault bekannt, aber für eine get-Methode hat
# die so einen verwirrenden Namen, dass ich sie vermeide
if c not in counts:
counts[c] = 1
else:
counts[c] += 1
pairs = counts.items()
pairs.sort(key=lambda (c, n): n, reverse=True)
for (c, n) in pairs:
if c == '\n': continue # der Zeilenumbruch macht meine Tabelle kaputt
print "'%s': %3d" % (c, n)
Stefan
Re: Ein Wert aus der Dictionary auslesen ?
Verfasst: Donnerstag 26. April 2012, 13:15
von Disaster
Danke Stefen und webspider für die schnelle Hilfe Thread kann geschlossen werden

.
Re: Ein Wert aus der Dictionary auslesen ?
Verfasst: Donnerstag 3. Mai 2012, 18:44
von Hyperion
Ich möchte dann doch noch mal auf `collections.counter` hinweisen - das ist die eingebaute Lösung für das Problem
@Disaster: Benutzt Du Python3.x? Das würde den Fehler mit beim `iteritems`-Aufruf erklären. Dort musst Du stattdessen `items` verwenden.