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 :

Comparaison d'élément de 2 listes


Sujet :

Python

  1. #1
    Membre éclairé
    Inscrit en
    Mai 2006
    Messages
    705
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 705
    Par défaut Comparaison d'élément de 2 listes
    Salut à tous,
    Voila j'ai une première liste (diff_list) qui contient des instances d'une classe document, et j'ai une deuxième liste qui contient des instances d'une classe chapitre (dont l'un de ses attributs est document de type "ReferenceProperty" qui se référence à un document...

    Je veut ajouter les différents chapitres dans la liste diff_list sans avoir de redandence à travers cet algorithme:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for chapter in chapters:
    			if chapter.document not in diff_list: 
    					diff_list.append(chapter)
    Mais le problème içi, c'est que lors de l'affichage je trouve une redandence des noms de documents ... C'est à dire que si j'ai doc1 et doc2 dans liste documents(=diff_list) et j'ai un chapitre dont le nom du document est doc1, il sera affiché aussi et par la suite j'aurais 2 affichage du doc1 .
    J'espère que je me suis bien expliqué ... Est ce que vous avez des suggestions pour règler ce problème !

    Remarque: D'aprés mon propore analyse, j'en suis presque sûr que le problème se situe dans la ligne suivante if chapter.document not in diff_list: , c'est à dire que la comparaison ne se fait pas correctement

    NB: je vous rappelles que diff_list contient des instances de la classe document et chapters est une liste qui contient des instances de la classe chapter.

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 068
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 068
    Par défaut
    ...des instances d'une classe chapitre dont l'un de ses attributs est document de type "ReferenceProperty" ...
    je vous rappelles que diff_list contient des instances de la classe document

    tu le dis toi-même, c'est pas la même chose.

  3. #3
    Membre éclairé
    Inscrit en
    Mai 2006
    Messages
    705
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 705
    Par défaut
    oui, je sais...
    c'est comme ça a peut prêt la squelette:
    - Classe document (avec ses différents attributs tel que titre, date creation, etc ....)

    - Classe chapter qui contient des attributs aussi et parmis lesquel on trouve un attribut document de type RefrenceProperty !!!

    - diff_list: contient des instances de la classe document.

    - chapters: contient des instances de la classe chapter.

    Le but c'est de tester l'existance de chaque element de la liste chapters dans la liste diff_list, si c'est ne pas le cas, j'ajoute l'élément chapter dans la liste diff_list (pour éliminer la redandence)....

    remarque: J'ajoute tout le chapter dans la liste diff_list a travers cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    diff_list.append(chapter)
    mais lors de l'affichage je sais comment extraire le titre du document, c'est à dire j'ai pas un pb d'affichage, c'est juste éliminer la redandance que le test suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if chapter.document not in diff_list:
    ne me le permet pas !!!

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 418
    Par défaut
    Bonjour,


    Les choses devraient s’éclairer aprés avoir fait tourner ton programme avec cette addition:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for chapter in chapters:
        print 'type(chapter.document) =',type(chapter.document)
        print 'set(map(type,diff_list)) =', set(map(type,diff_list))
        if chapter.document not in diff_list:
            diff_list.append(chapter)


    Nota: 'redondance' s’écrit ainsi

  5. #5
    Membre éclairé
    Inscrit en
    Mai 2006
    Messages
    705
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 705
    Par défaut
    Merci eyquem, mais ça n'a toujours pas fonctionnée

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 418
    Par défaut
    Je n’ai pas dit que ça allait fonctionner, je pensais que cela pourrait t’offrir l’occasion de comprendre, et nous aussi si tu voulais bien nous faire part du résultat, la raison du problème.



    je suis presque sûr que le problème se situe dans la ligne suivante if chapter.document not in diff_list: , c'est à dire que la comparaison ne se fait pas correctement
    Pas dur. Une fois qu’on s’est dit ça, il faut se donner les moyens de comprendre ce qui fait foirer la comparaison. Pour cela, il faut commencer par regarder précisément ce qui est comparé.

    Alors, vas tu nous livrer un peu plus de renseignements ?

  7. #7
    Membre Expert
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 068
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 068
    Par défaut
    y a une façon plus simple d'eliminer les doublons...mais ça on te le dira qu'après
    tout d'abord, c'est quoi RefrenceProperty ?

Discussions similaires

  1. comparaison 3 éléments successifs d'une liste
    Par kali38 dans le forum Général Python
    Réponses: 10
    Dernier message: 27/06/2014, 18h54
  2. comparaison les éléments deux listes
    Par minooo dans le forum Débuter avec Java
    Réponses: 5
    Dernier message: 18/06/2012, 09h52
  3. Comparaison d'éléments de listes
    Par hassenssas dans le forum Débuter avec Java
    Réponses: 4
    Dernier message: 18/11/2010, 17h46
  4. [CSS]Changer l'interligne des éléments d'une liste à puces
    Par khany dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 21/03/2005, 13h57
  5. Réponses: 2
    Dernier message: 11/01/2005, 14h10

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