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 :

hash et classement des valeurs


Sujet :

Langage Perl

  1. #1
    Rédactrice

    Avatar de stoyak
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    408
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 408
    Points : 1 491
    Points
    1 491
    Par défaut hash et classement des valeurs
    Bonjour à tous,

    voila je vous soumets mon probleme...
    j'ai un fichier qui ressemble à ça
    sondeA 1 120
    sondeB 1 125
    sondeC 10 121
    sondeD 10 122
    sondeE 2 150
    sondeG y 200
    sondeF x 150
    je voudrais classer selon la deuxieme puis la troisieme colonne pour avoir un resultat du style
    sondeA 1 120
    sondeB 1 125
    sondeE 2 150
    sondeC 10 121
    sondeD 10 122
    sondeF x 150
    sondeG y 200
    j'ai mis mon fichier temporaire dans un hash
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    my %hash_temp;
    open (FICTEMP,$fichier_temp) || die "impossible d'ouvrir le fichier $fichier_temp\n";
    while (my $ligne_temp = <FICTEMP>) {
      chomp($ligne_temp);
      my @tab_ligne_temp = split ("\t",$ligne_temp);
      my $probe_temp = $tab_ligne_temp[0];  
      my $chr_temp = $tab_ligne_temp[1];
      my $start_temp = $tab_ligne_temp[2];
      $hash_temp{$probe_temp}=[$chr_temp,$start_temp];
    }
    close (FICTEMP);
    alors voila .. comment classer mes donnees en fonction de la premiere puis de la deuxieme case du tableau de valeur de mon hash?

    ... merci d'avance!
    Cela demande du courage d'en tirer du plaisir
    Quand on n'a qu'un marteau, tous les problèmes ressemblent à un clou

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    427
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 427
    Points : 459
    Points
    459
    Par défaut
    ta seconde colonne peut contenir des lettres (x et y dans ton exemple) ou seulement des chiffres? je suppose que ce ne sont que des chiffres et que ton x y est juste pour l'exemple, sinon on peut pas la classer de ttes facons

    deja pour simplifier pas besoin de hash, autant mettre ta ref des trois elements dans un tableau:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    open (my $fh, '<', $fichier_temp) || die "impossible d'ouvrir le fichier $fichier_temp\n";
    my @lines = map { chomp; [split(/\t/, $_)] } <$fh>;
    close $fh;
    la sortie des lignes triées:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print map {"@$_\n"} sort { ($a->[1] <=> $b->[1]) || ($a->[2] <=> $b->[2]) } @lines;
    et bien sur tu peux faire l'ensemble en une fois sans passer par @lines
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    print map {"@$_\n"} sort { ($a->[1] <=> $b->[1]) || ($a->[2] <=> $b->[2]) } map { chomp; [split(/\t/, $_)] } <$fh>;
    close $fh;
    (code non testé)

    ensuite si tu a bcp de ligne (plusieurs centaines de milliers) ca peut commencer a etre interessant de passer par d'autres methodes de tri genre celles proposées par Sort::Key, et si tu a encore plus de ligne et que tu ne peux pas le faire en memoire il faudra passer par du sort externe avec par exemple Sort::External (qui propose aussi un excellent tutoriel pour faire la meme chose que ce que fait Sort::Key au niveau de l'optimization du tri)
    Recherche staigiaire(s) motivé(s) sur projet perl/reseau a grande echelle. Me contacter par mp.

Discussions similaires

  1. Tri des valeurs dans un DBGrid
    Par soviet dans le forum C++Builder
    Réponses: 3
    Dernier message: 11/06/2015, 14h18
  2. affichage des valeurs d'une table de hash
    Par Nifaste dans le forum Langage
    Réponses: 1
    Dernier message: 10/11/2011, 10h34
  3. analyse des clés et des valeurs d'un hash
    Par Jasmine80 dans le forum Langage
    Réponses: 2
    Dernier message: 11/01/2011, 12h27
  4. Réponses: 1
    Dernier message: 12/11/2008, 10h03
  5. Réponses: 6
    Dernier message: 04/04/2003, 15h28

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