Thread Numiersche Sortierfunktion (12 answers)
Opened by Gast at 2012-11-29 07:47

hlubenow
 2012-11-29 17:28
#163749 #163749
User since
2009-02-22
875 articles
BenutzerIn
[default_avatar]
Guest Gast
Die Keys enthalten jeweils ein bestimmtes Wort und die zugeordneten Werte eine Zahl, die die Anzahl ihres jeweiligen Wortes in einem Text anzeigen. Es geht also um eine Häufigkeitsliste.

Nun soll die Funktion mir die Keys so sortieren, dass der häufigste als erstes angezeigt wird und der am wenigsten vorkommende als letztes.

Also, dazu würde ich erstmal einen neuen Hash erzeugen, der als Keys die Zahlen der Häufigkeiten enthält und als Wert jeweils ein Array mit den Wörtern, die der jeweiligen Häufigkeit entsprechen.
Das wäre dann ein Hash of Arrays. In Perl ist das für mich etwas schwierig, auf die Schnelle konnt' ich nur mal ein Beispiel in Python formulieren:
Code (python): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/usr/bin/env python
# coding: iso-8859-1

h = {"als" : 5,
     "wie" : 3,
     "Von" : 3,
     "zu"  : 5,
     "von" : 10}

h2 = {}
for i in h.keys():
    if not h2.has_key(h[i]):
        h2[h[i]] = []
    h2[h[i]].append(i)

print h2

Aber es wäre durchaus möglich, das nach Perl zu übersetzen.

Danach kann man diesen Hash nach den Zahlen sortieren und sich dann überlegen, was man mit den Werten in den enthaltenen Arrays anstellt.

View full thread Numiersche Sortierfunktion