Simulation de tri d'une hash - Perl - Programmation
Marsh Posté le 12-09-2005 à 13:53:32
essai ca:
my @liste_cles_tries = sort {$hash_test{$a} <=> $hash_test{$b}} @liste_cles;
Marsh Posté le 12-09-2005 à 14:02:21
Merci
Effectivement en lisant la doc de sort un peu plus attentivement, je viens de voir qu'il fallait utiliser <=> ou cmp.
Pour ma culture perso, ca correspond à qqchose d'utiliser des opérateurs "simples" dans le sort?
Marsh Posté le 12-09-2005 à 12:33:08
Bonjour,
je cherche à effectuer un tri sur les éléments d'une hash.
Je sais que l'utilisation d'un tableau aurait été plus recommandé mais pas dans mon cas, vu l'utilisation que je fais de ma structure.
Ce que j'ai cherché a faire :
- récupérer les clés de mon tableau
- faire un sort sur mon tableau pour trier les clés en fonction des valeurs de ma hash
- parcourir ma hash dans l'ordre grace au tableau précédent
Je pensais que ca marchait mais en fait non, apparement ca fait intervenir je ne sais quoi d'aléatoire (le rangement des hash en mémoire?) qui fait que j'arrive a obtenir des résultats étranges...
J'ai fait un test vite fait pour me montrer que ca ne marchait pas mais j'aimerai bien comprendre pourquoi, et évidemment le faire fonctionner...
Voila le code :
et voila ce que j'ai obtenu :
Liste non triée
$VAR1 = 'aservice4';
$VAR2 = 'gservice2';
$VAR3 = 'bservice6';
$VAR4 = 'lservice3';
$VAR5 = 'zservice1';
$VAR6 = 'oservice5';
Liste triée
$VAR1 = 'bservice6';
$VAR2 = 'aservice4';
$VAR3 = 'lservice3';
$VAR4 = 'gservice2';
$VAR5 = 'oservice5';
$VAR6 = 'zservice1';
Terminé
L'élément 5 s'est un peu perdu...
Si quelqu'un a une solution ou une autre idée pour ce problème, je suis preneur...
Merci