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 :

Trier un tableau par nombre d'occurences d'un mot


Sujet :

Langage Perl

  1. #1
    Membre à l'essai
    Profil pro
    SAUVEGARDE
    Inscrit en
    Juin 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : SAUVEGARDE

    Informations forums :
    Inscription : Juin 2011
    Messages : 4
    Par défaut Trier un tableau par nombre d'occurences d'un mot
    Bonjour à tous,

    Je viens vous solliciter car je n'arrive pas à trouver la solution.
    J'aimerais trier un tableau:

    Tableau actuelle:

    my @tab = ("toto","titi","toto","tata","toto","tata");

    Tableau voulu:

    my @tab = ("toto","toto","toto","tata","tata","titi");


    Merci d'avance pour votre aide!!

  2. #2
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Par défaut
    Ahem... tu as un peu cherché dans la doc

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    my @tab = ("toto","titi","toto","tata","toto","tata");
    my @sorted_tan = sort @tab;

  3. #3
    Membre à l'essai
    Profil pro
    SAUVEGARDE
    Inscrit en
    Juin 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : SAUVEGARDE

    Informations forums :
    Inscription : Juin 2011
    Messages : 4
    Par défaut
    Mais là ça trie par ordre alphabétique:

    Avant: toto titi toto tata toto tata
    Après: tata tata titi toto toto toto

    J'ai besoin que ça classe par nbre d'occurence:

    Après: toto toto toto tata tata titi

  4. #4
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    salut,

    je propose :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    my @tab = ("toto","titi","toto","tata","toto","tata");
    my @tab2, my %hash;
     
    foreach my $i (@tab) { $hash{$i}++; }
    foreach my $i (sort { $hash{$b} <=> $hash{$a} } keys(%hash)) {
        push @tab2, ($i) x $hash{$i};
    }
    (y'a peut-être mieux je ne suis pas du tout expert Perl)

  5. #5
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Par défaut
    Ooops... j'ai regardé trop vite le résultat attendu.
    Mais à ma décharge, tu aurais pu écrire explicitement l'ordre de tri plutôt que de le laisser deviner

    La solution de BufferBob est celle à retenir.

  6. #6
    Membre à l'essai
    Profil pro
    SAUVEGARDE
    Inscrit en
    Juin 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : SAUVEGARDE

    Informations forums :
    Inscription : Juin 2011
    Messages : 4
    Par défaut
    Toujours plus expert que moi

    Merci! ça fonctionne nikel!

  7. #7
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Par défaut
    Juste une remarque :

  8. #8
    Membre à l'essai
    Profil pro
    SAUVEGARDE
    Inscrit en
    Juin 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : SAUVEGARDE

    Informations forums :
    Inscription : Juin 2011
    Messages : 4
    Par défaut
    Citation Envoyé par Philou67430 Voir le message
    Ooops... j'ai regardé trop vite le résultat attendu.
    Mais à ma décharge, tu aurais pu écrire explicitement l'ordre de tri plutôt que de le laisser deviner

    La solution de BufferBob est celle à retenir.
    Oui dsl je l'avais juste mis ds le titre
    Merci qd même de ton aide

  9. #9
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Par défaut
    Bon, je remballe mon caquet ...

    En règle générale, les traitements utilisant un nombre d'occurrence de "choses" ou cherchant à uniciter* une liste sont réalisés à l'aide d'un hash.

    * uniciter : francisation de la commande Unix uniq (rend unique les éléments d'une liste)

  10. #10
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    Citation Envoyé par Philou67430 Voir le message
    Juste une remarque :
    justement je me posais la question tout à l'heure, merci

    Citation Envoyé par Philou67430 Voir le message
    * uniciter : francisation de la commande Unix uniq (rend unique les éléments d'une liste)
    ce serait donc plutôt "uniquer" (à conjuguer sans modération)

  11. #11
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Par défaut
    A pardon, uniquifier ...

  12. #12
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Billets dans le blog
    1
    Par défaut
    Personnellement, je dirais plutôt dédoublonner.

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

Discussions similaires

  1. [MySQL] Recherche puis classement par nombre d'occurences
    Par adrien357 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 26/07/2007, 09h22
  2. Trier un tableau par la méthode d'énumération
    Par dyala dans le forum Pascal
    Réponses: 1
    Dernier message: 07/06/2007, 13h22
  3. Classement de résultats par nombre d'occurences
    Par pc.bertineau dans le forum Langage SQL
    Réponses: 2
    Dernier message: 05/03/2007, 17h07
  4. Trier un tableau par rapport à un autre tableau
    Par deaven dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 02/05/2005, 09h27
  5. Trier un tableau par ordre croissant
    Par Halleck dans le forum Algorithmes et structures de données
    Réponses: 15
    Dernier message: 01/11/2004, 00h04

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