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

Python Discussion :

Suppression de doublons


Sujet :

Python

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 35
    Points : 99
    Points
    99
    Par défaut Suppression de doublons
    Bonjour à tous,

    Je dispose de la variable suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    a = ["01 -- toto",
         "02 -- tata",
         "03 -- toto",
         "04 -- tutu",
         "05 -- titi",
         "06 -- tata",
         "07 -- titi",
         "08 -- tutu"]
    Je voudrais comparer la dernière partie de chaque ligne, uniquement le mot de la fin (t*t*) pour supprimer les doublons en ne gardant que le dernier.
    Il me faudrait donc:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    a = ["03 -- toto",
         "06 -- tata",
         "07 -- titi",
         "08 -- tutu"]
    Je sais supprimer les doublons d'une liste de plusieurs nombres.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    l = [1,2,3,3,4,4,5] 
    >>> list(set(l)) 
    [1, 2, 3, 4, 5] 
    >>>
    Mais dans le cas présent, je ne vois pas
    Faut-il parser ? Avez-vous des idées ?


    Merci d'avance.

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Salut,

    Si c'est le dernier que tu veux conserver, alors parcours la liste à l'envers.

    Par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    a = ["01 -- toto",
         "02 -- tata",
         "03 -- toto",
         "04 -- tutu",
         "05 -- titi",
         "06 -- tata",
         "07 -- titi",
         "08 -- tutu"]
     
    b = []
    c = []
    for i in reversed(a):
        if i[-4:] not in b:
            c.append(i)
            b.append(i[-4:])
    print c

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 35
    Points : 99
    Points
    99
    Par défaut
    Citation Envoyé par VinsS Voir le message
    Salut,

    Si c'est le dernier que tu veux conserver, alors parcours la liste à l'envers.

    Par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    a = ["01 -- toto",
         "02 -- tata",
         "03 -- toto",
         "04 -- tutu",
         "05 -- titi",
         "06 -- tata",
         "07 -- titi",
         "08 -- tutu"]
     
    b = []
    c = []
    for i in reversed(a):
        if i[-4:] not in b:
            c.append(i)
            b.append(i[-4:])
    print c

    Bon ben je cherchais plus compliqué.

    Merci !

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Thyxx Voir le message
    Bonjour à tous,
    Je voudrais comparer la dernière partie de chaque ligne, uniquement le mot de la fin (t*t*) pour supprimer les doublons en ne gardant que le dernier.
    Mais dans le cas présent, je ne vois pas
    Faut-il parser ? Avez-vous des idées ?
    Merci d'avance.
    Bonjour,

    Peut-être faire quelque chose comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
     
    a = ["01 -- toto",
         "02 -- tata",
         "03 -- toto",
         "04 -- tutu",
         "05 -- titi",
         "06 -- tata",
         "07 -- titi",
         "08 -- tutu"]
     
    b = set([x.split()[-1] for x in a])
     
    c = []
     
    for x in b:
        c.append(list(filter(lambda i:x in i, a))[-1])
     
    print(c)
    @+.

  5. #5
    Membre expérimenté Avatar de plxpy
    Homme Profil pro
    Ingénieur géographe
    Inscrit en
    Janvier 2009
    Messages
    792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur géographe
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2009
    Messages : 792
    Points : 1 481
    Points
    1 481
    Par défaut
    C'est Vendredi, c'est permis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    >>> a = ["01 -- toto",
    ...      "02 -- tata",
    ...      "03 -- toto",
    ...      "04 -- tutu",
    ...      "05 -- titi",
    ...      "06 -- tata",
    ...      "07 -- titi",
    ...      "08 -- tutu"]
    >>>
    >>> dict([ (line.split()[-1], line) for line in a ]).values()
    ['08 -- tutu', '06 -- tata', '07 -- titi', '03 -- toto']
    EDIT : pour conserver un semblant d'ordre, passer par les dictionnaires ordonnés

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>> from collections import OrderedDict
    >>> 
    >>> OrderedDict([ (line.split()[-1], line) for line in a]).values()
    ['03 -- toto', '06 -- tata', '08 -- tutu', '07 -- titi']
    "La simplicité ne précède pas la complexité, elle la suit." - Alan J. Perlis
    DVP ? Pensez aux cours et tutos, ainsi qu'à la FAQ !

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par plxpy Voir le message
    C'est Vendredi, c'est permis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    >>> a = ["01 -- toto",
    ...      "02 -- tata",
    ...      "03 -- toto",
    ...      "04 -- tutu",
    ...      "05 -- titi",
    ...      "06 -- tata",
    ...      "07 -- titi",
    ...      "08 -- tutu"]
    >>>
    >>> dict([ (line.split()[-1], line) for line in a ]).values()
    ['08 -- tutu', '06 -- tata', '07 -- titi', '03 -- toto']
    Bien vu.

    Je n'y aurais pas pensé.

    @+.

  7. #7
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 35
    Points : 99
    Points
    99
    Par défaut
    Citation Envoyé par plxpy Voir le message
    EDIT : pour conserver un semblant d'ordre, passer par les dictionnaires ordonnés

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>> from collections import OrderedDict
    >>> 
    >>> OrderedDict([ (line.split()[-1], line) for line in a]).values()
    ['03 -- toto', '06 -- tata', '08 -- tutu', '07 -- titi']
    Parfait !
    Merci.

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

Discussions similaires

  1. Suppression de doublons et insertion
    Par Samish dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 15/08/2005, 21h57
  2. Réponses: 17
    Dernier message: 03/12/2004, 11h17
  3. [langage] Suppression de doublon dans tableau
    Par LFC dans le forum Langage
    Réponses: 5
    Dernier message: 15/04/2004, 14h08
  4. Requête de suppression de doublons : besoin d'aide
    Par biocorp dans le forum Langage SQL
    Réponses: 3
    Dernier message: 27/01/2004, 17h04
  5. [LG]Suppression de doublons
    Par moustique31 dans le forum Langage
    Réponses: 5
    Dernier message: 20/12/2003, 21h03

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