IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Perl Discussion :

[langage] Trier une hastable


Sujet :

Langage Perl

  1. #1
    Membre du Club
    Inscrit en
    Mars 2002
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 88
    Points : 59
    Points
    59
    Par défaut [langage] Trier une hastable
    Salut à tous,

    On trouve souvent sur le net des exemples pour trier une hastable par les clés, mais moi j'aimerai trier ma hashtable par les valeurs (numériques).

    Je me doute que ca doit être fait en 1 ligne ou 2 (vive Perl), mais je ne sais pas trop comment faire (une fois de plus, vive Perl...).

    Donc si un fan de perl a deux secondes à me consacrer...


    Merci d'avance !
    "Dis oui à celui qui te dit non, et il te dira peut-être.", Gogoye - Les Proverbes à la Con

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 90
    Points : 96
    Points
    96
    Par défaut
    et voilou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    my %hash = ('cle1' => 2,
    	    'cle2' => 1,
    	    'cle3' => 15,
    	    'cle4' => 0);
     
    foreach my $cle (sort { $hash{$a} <=> $hash{$b} } keys %hash ) {
      print "$cle\t$hash{$cle}\n";
    }

  3. #3
    Membre du Club
    Inscrit en
    Mars 2002
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 88
    Points : 59
    Points
    59
    Par défaut
    Super, et pour trier dans l'ordre décroissant ?
    "Dis oui à celui qui te dit non, et il te dira peut-être.", Gogoye - Les Proverbes à la Con

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 90
    Points : 96
    Points
    96
    Par défaut
    Super, et pour trier dans l'ordre décroissant ?

    je pourrais dire RTFM (tu peux essayer de trouver un peu de doc par toi meme : )

    mais tu peux donc faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sort { $hash{$b} <=> $hash{$a} } keys %hash

  5. #5
    Membre du Club
    Inscrit en
    Mars 2002
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 88
    Points : 59
    Points
    59
    Par défaut
    Ouai, je suis bien conscient, mais bon, chercher 2h pour trouver 1ligne, je suis trop fénéant, surtout que je sais que c'est pas vraiment une question qui va faire perdre 1/2h à celui qui répond...

    En tout cas, merci bien l'ami ;)
    "Dis oui à celui qui te dit non, et il te dira peut-être.", Gogoye - Les Proverbes à la Con

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 90
    Points : 96
    Points
    96
    Par défaut
    perl trier hachage valeur

    4 mots cle a taper dans google pour avoir tout seul ta reponse
    et je pense que c'est un peu plus gratifiant de chercher et trouver par soi meme non ?

  7. #7
    Membre du Club
    Inscrit en
    Mars 2002
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 88
    Points : 59
    Points
    59
    Par défaut
    Lol, à tout hasard, j'ai tapé ces 4 mot dans google... et je viens de me rendre compte que je l'ai déjà fait puisque en première page j'ai un site déjà visité qui traite de ca... bah, en ce moment j'ai des problèmes de mémoire ;)

    En fait, je crois savoir pourquoi j'ai laissé tombé ce qu'ils disaient dedans : en fait, ils utilisent ce que tu m'a donné, c'est à dire trier le hash à la volée pour l'affichage, mais en fait (arrête moi si je me trompe), ca ne trie pas le hash, ca affiche juste de manière triée... moi j'aurai aimé tomber sur la fonction qui fait " trier_hash_val(%hash) ".

    Voila, bref, merci quand même ;)
    "Dis oui à celui qui te dit non, et il te dira peut-être.", Gogoye - Les Proverbes à la Con

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 90
    Points : 96
    Points
    96
    Par défaut
    en fait,

    est-ce-utile de trier une table de hash, hormis au moment de l'affichage ? :

    parce que si tu cherches a traiter les valeurs de la table de hash, tu va de otue facons passer par cette forme de tri non ?

  9. #9
    Membre du Club
    Inscrit en
    Mars 2002
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 88
    Points : 59
    Points
    59
    Par défaut
    C'est au cas ou je voudrait l'afficher plusieurs fois, sans n'y avoir fait de modifications... c'est alors plus rentable de la trier qu'une seule fois...

    D'autre part, je trouve la syntaxe de l'affichage trié relativement lourde, comme souvent en Perl d'ailleurs. C'est pourca que je cherchais une fonction plus "basique".
    "Dis oui à celui qui te dit non, et il te dira peut-être.", Gogoye - Les Proverbes à la Con

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 90
    Points : 96
    Points
    96
    Par défaut
    Citation Envoyé par Gogoye
    C'est au cas ou je voudrait l'afficher plusieurs fois, sans n'y avoir fait de modifications... c'est alors plus rentable de la trier qu'une seule fois...
    et si tu crees une table fille triee a partir du tri de la table mere, que tu deletes ensuite

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 90
    Points : 96
    Points
    96
    Par défaut
    et ca ?

    Comment puis-je conserver mes hachages toujours ordonnés ?

    Vous pouvez regarder dans le module DB_File et attacher avec tie() en utilisant les liens de hachage $DB_TREE tel que documenté dans DB_File/``In Memory Databases''. Le module Tie::IxHash du CPAN peut aussi être instructif.

  12. #12
    Membre du Club
    Inscrit en
    Mars 2002
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 88
    Points : 59
    Points
    59
    Par défaut
    L'utilisation d'une hastable fille est certe possible, mais je n'aime pas cette conception de la prog qui consiste à modifier-copier-détruire, je préfère modifier directement les entités.

    Pour ce qui est de l'autre solution, je ne suis pas une bête en Perl donc je ne sais pas du tout de quoi ils veulent parler, mais je vais jeter un coup d'oeil.
    "Dis oui à celui qui te dit non, et il te dira peut-être.", Gogoye - Les Proverbes à la Con

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [langage] Creer une fonction qui met en majuscule ?
    Par Cyber@l dans le forum Langage
    Réponses: 6
    Dernier message: 04/12/2003, 18h44
  2. [langage] vérifier une adresse email
    Par GMI3 dans le forum Langage
    Réponses: 10
    Dernier message: 19/10/2003, 18h06
  3. [langage] surement une expression régulière...
    Par armada dans le forum Langage
    Réponses: 5
    Dernier message: 30/05/2003, 17h06
  4. Créer une vue pour trier une requete UNION ?
    Par Etienne Bar dans le forum SQL
    Réponses: 3
    Dernier message: 03/01/2003, 20h22
  5. langage] Découper une chaine suivant un délimiteur
    Par totox17 dans le forum Langage
    Réponses: 2
    Dernier message: 25/11/2002, 16h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo