Wie Hash sortieren?
Steve
- perl
Hallo zusammen,
habe folgende Frage.
Ich habe einen Hash mit Städtenamen als Index definiert. Jeder Eintrag des Hashes hat als Wert die Einwohneranzahl.
Stadt | Einwohneranzahl
Stadt 1 | 22222
Stadt 2 | 1111111
Stadt 3 | 2333344
Wie kann man nun den Hash nach der Einwohneranzahl sortieren. Die Ausgabe soll dann wie folgt sein:
Stadt | Einwohneranzahl
Stadt 3 | 2333344
Stadt 2 | 1111111
Stadt 1 | 22222
Ich weiss, dass man z.B. die Valuewerte des Hashes, also die Einwohneranzahl, in ein Array kopieren kann. Diese kann man ja dann sortieren. Aber wie bekommt man dann wieder den Bezug zu den Städten hin?
Hat jemand einen Tip?
Danke,
Steve
Hi,
Wie kann man nun den Hash nach der Einwohneranzahl sortieren.
perldoc perlfaq4 enthält alles, was Du wissen musst.
Cheatah
Hallo,
du läßt dir in einer Schleife anstatt den Keys einfach die Values ausgeben und
benutzt sort() um diese zu sortieren.
MfG
alligator
Hi alligator,
vielen, vielen Dank für die Info.
Ich habe aber jetzt ein Problem die Städtenamen auszugeben.
foreach $ort (values %ortNameAnz)
{
print "$ort\n"; # Anzahl Einwohner
print "$ortNameAnz{$ort}\n"; # Ort ==> geht nicht
}
Weist du wie?
Bye,
Steve
Servus,
each ist dein Freund :o)
http://www.perldoc.com/perl5.8.0/pod/func/each.html
cya
alligator
try this:
%st = (
'Berlin','999999',
'Hamburg','888898',
'Karlsruhe','333000',
'Weimar','56000',
);
foreach my $st(sort{ ew($a) <=> ew($b) } keys %st){
print "Ort: $st, Einwohner: $st{$st}\n";
}
sub ew{ return $st{$_[0]} }
Mehr zum Sortieren findest du auch auf der PerlBase