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 :

récupérer les doublons d'un tableau


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 récupérer les doublons d'un tableau
    voilà, je vous explique:
    j'ai des énormes fichiers avec un nombre conséquent de colonnes. je voudrais donc les stocker dans des bases de données pour me faciliter la vie. je voudrais mettre un certain type de colonnes en clé primaire. pour cela, j'aimerais vérifier que le contenu est unique.
    j'ai mis ces valeurs dans un tableau et je voudrais donc récuperer celles, s'il y en a, qui sont redondantes.
    j'ai vu le thread suivant
    http://www.developpez.net/forums/sho...e+dans+tableau, mais il ne répond pas directement à ma question. l'un d'entre vous aurait-il déjà développé un "truc"?
    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
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Tu dis vouloir "récupérer les valeurs redondantes", mais ne veux tu pas plutôt les supprimer de ton tableau ?

    Voici toujours un code qui renvoie une liste des doublons (ou plus) d'une autre liste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    sub doublons {
      my %temp;
      my @doublons;
      foreach (@_){
        push @doublons, $_ if $temp{$_}++ == 1;
      }
      return @doublons;
    }
    --
    Jedaï

  3. #3
    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
    merci jedai,
    j'avais déjà une fonction permettant de supprimer les doublons.
    Mais sur ce cas, j'avais surtout besoin de les recupérer.
    Sinon peux tu expliquer ton code, surtout cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    push @doublons, $pp if $temp{$pp}++ == 1;
    surtout Merci
    Cela demande du courage d'en tirer du plaisir
    Quand on n'a qu'un marteau, tous les problèmes ressemblent à un clou

  4. #4
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      foreach (@_){
        push @doublons, $_ if $temp{$_}++ == 1;
      }
    Dans la boucle foreach (@_), $_ prend successivement la valeur de chacun des éléments de @_. $temp{$_}++ met la valeur associé à $_ à i+1 et renvoie i, sachant que l'on considère que i est à 0 lorsqu'il n'a pas encore été initialisé. Donc la première fois que tu rencontres un élément a dans la liste @_, $temp{a} est mis à 1 et le push n'est pas exécuté (car 0 != 1), la deuxième fois qu'on rencontre a, le push est exécuté. Les fois suivantes il ne l'est plus. Donc au final on a tous les doublons en un exemplaire dans @doublons.

    --
    Jedaï

  5. #5
    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
    ok, je te remercie de ton explication!
    à moi de jouer maintenant !
    Cela demande du courage d'en tirer du plaisir
    Quand on n'a qu'un marteau, tous les problèmes ressemblent à un clou

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

Discussions similaires

  1. [Tableaux] recuperer les doublons d'un tableau
    Par philippejuju dans le forum Langage
    Réponses: 6
    Dernier message: 26/06/2006, 12h16
  2. Réponses: 5
    Dernier message: 23/05/2006, 14h08
  3. Eliminer les doublons dans un tableau d'entiers
    Par engi dans le forum Algorithmes et structures de données
    Réponses: 18
    Dernier message: 21/03/2006, 13h59
  4. [javascript] récupérer les "clés" d'un tableau
    Par LE NEINDRE dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 20/02/2006, 10h13
  5. Eliminer les doublons d'un tableau de hachage
    Par dreydrey dans le forum Langage
    Réponses: 21
    Dernier message: 15/11/2005, 15h03

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