Thread HoH sortiert ausgeben
(5 answers)
Opened by roli at 2018-06-14 13:21
Der verlinkte Artikel hilft Dir nicht viel weiter, weil er ein ganz anderes Problem beschreibt, als Du lösen willst. Dort werden nur die Einträge der ersten Hash-Ebene sortiert. Sortierkriterium ist der Value zu einem Key aus der 2. Hash-Ebene.
Du willst dagegen die Key-Kombinationen {Start}{Ziel} nach dem Value sortieren. Die Liste, die Du sortieren willst besteht also nicht nur aus der ersten Hash-Ebene sondern aus allen Kombinationen. Und - das hast Du nicht explizit gesagt, ist aber meine Vermutung - Du willst ohne Berücksichtigung der Gruppierung in dne Hashes "flach" sortieren, also Code: (dl
)
1 "Musterstadt" => "Kleines Kaff" = 1226 anstatt zunächst den ersten Key und dann den zweiten wie in Code: (dl
)
1 "Musterstadt" => "Kleines Kaff" = 1226 Also würde ich erstmal die flache Liste zusammenstellen und sie dann sortieren (ungetestet): Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 my @list; # Komibantionen ['start','ziel'] foreach my $start (keys %entfernung) { foreach my $ziel (keys %{$entfernung{$start}}) { push @list, [$start,$ziel]; } } my @sorted_list = sort {$entfernung{$a->[0]}{$a->[1]} <=> $entfernung{$b->[0]}{$b->[1]}} @list; printf "Von %s nach %s: %d\n", @$_, $entfernung{$_->[0]}{$_->[1]} foreach @sorted_list; Das ist sicher noch nicht optimal, aber die grundlegende Idee sollte klar sein. |