Trier Perl de hachage à partir de la plus grande à la plus petite
Je suis en train de regarder un exemple trouvé ici: http://perlmeme.org/tutorials/sort_function.html
Et il donne ce code pour trier une table de hachage en fonction de chaque valeur de clé:
# Using <=> instead of cmp because of the numbers
foreach my $fruit (sort {$data{$a} <=> $data{$b}} keys %data) {
print $fruit . ": " . $data{$fruit} . "\n";
}
Ce code je ne suis pas entièrement comprendre, mais quand je l'expérimenter, il trie du plus bas au plus élevé. Comment puis-je retourner à trier du plus élevé au plus faible?
OriginalL'auteur searayman | 2012-04-18
Vous devez vous connecter pour publier un commentaire.
Swap
$a
et$b
:OriginalL'auteur chepner
Suffit d'utiliser
reverse sort
au lieu desort
.foreach my $fruit (reverse sort keys %data) { ...
Cela semble réclamer
reverse
n'est pas moins efficace: search.cpan.org/~thaljef/Perl-Critique-1.117/lib/Perl/Critique/...est plus efficace et plus lisible le code.
Intéressant, je ne savais pas que. Je me demande si l'optimisation s'étend à comparer
$data{$a}
et$data{$b}
, au lieu de simplement$a
et$b
.OriginalL'auteur Ωmega