Hashes nach assoziierten Werten sortieren
diab
- perl
0 Klaus Mock0 rolfrost
Hallo,
der folgende Ausschnitt stammt aus dem O'Reilly Perl Kochbuch:
foreach $food (sort { $food_color{$a} cmp $food_color{$b} }
keys %food_color)
{
print "$food is $food_color{$food}.\n";
}
Meine Frage dazu: Kann man das auch so gestalten, dass die Sortierung nicht nach Alphabet sondern nach Wert erfolgt (Die assoziierten Werte sind integer-Zahlenwerte).
Vielen Dank!
_________
/----diab \
/ M.\
Hallo,
der folgende Ausschnitt stammt aus dem O'Reilly Perl Kochbuch:
foreach $food (sort { $food_color{$a} cmp $food_color{$b} }
keys %food_color)
{
print "$food is $food_color{$food}.\n";
}
Meine Frage dazu: Kann man das auch so gestalten, dass die Sortierung nicht nach Alphabet sondern nach Wert erfolgt (Die assoziierten Werte sind integer-Zahlenwerte).
Ich frage mich gerade, warum DU dann nicht den Verweisen des Buches folgst. Dann wärst DU nämlich zu Resept 4.15 gekommen (da das Sortieren der Schlüssel eines Hashes ja eigentlich das Sortieren einer Liste ist) und dann hättest Du auch mit etwas Glück (oder Neugier) auch Resept 4.14 gefunden, in dem beschrieben wird, wie man eine Liste numerisch sortiert.
http://www.perldoc.com/perl5.6/pod/perlop.html#Equality-Operators und http://www.perldoc.com/perl5.6/pod/func/sort.html wären auch eine recht hilfreiche Lektüre.
Grüße
Klaus
hi,
Meine Frage dazu: Kann man das auch so gestalten, dass die Sortierung nicht nach Alphabet sondern nach Wert erfolgt (Die assoziierten Werte sind integer-Zahlenwerte).
anstelle cmp nimm <=> als Vergleichsoperator.
mehr zum Sortieren
http://i-netlab.de/cgi-bin/index.cgi?vi=Sortieren_mit_PERL
oder Buch weiterlesen ;-)
Viele Grüße, Rolf