Ein Wert aus der Dictionary auslesen ?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Disaster
User
Beiträge: 8
Registriert: Freitag 27. Januar 2012, 22:11

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. :D

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 : :idea:
[

Code: Alles auswählen

dict = {k : 3, e : 2 , c : 5}
in diesen Fall möchte ich z.B , das Item c (weil das den größten Wert hat) ausprinten. :roll:

Ich bedanke mich schon Vorraus :)
webspider
User
Beiträge: 485
Registriert: Sonntag 19. Juni 2011, 13:41

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'
Disaster
User
Beiträge: 8
Registriert: Freitag 27. Januar 2012, 22:11

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 ?
webspider
User
Beiträge: 485
Registriert: Sonntag 19. Juni 2011, 13:41

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.
Disaster
User
Beiträge: 8
Registriert: Freitag 27. Januar 2012, 22:11

Es hat sich alles erledigt mir ist jetzt nicht mehr klar wofür die (1) steht ? :K
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

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
Disaster
User
Beiträge: 8
Registriert: Freitag 27. Januar 2012, 22:11

Danke Stefen und webspider für die schnelle Hilfe Thread kann geschlossen werden :).
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

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.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Antworten