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 de valeurs dans 2 dictionnaires


Sujet :

Python

  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2020
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2020
    Messages : 19
    Par défaut Comparaison de valeurs dans 2 dictionnaires
    Bonjour,
    mon objectif est de comparer les données de deux fichiers.
    Ces fichiers contiennent des séquences qui peuvent être identiques entre les fichiers et les identifiants qui vont être différents entre les deux fichiers.

    J'ai donc transformé les deux fichiers en dictionnaire.
    Avec comme clé l’identifiant et en valeur la séquence.
    Mon but est de comparer ces deux dictionnaires pour au final retourner uniquement les clés pour lesquelles les valeurs sont différentes entre les deux dictionnaires.
    Savez vous comment appliquer une condition if (ou tout autre chose) pour une valeur d'un dictionnaire1 qui est égale unevaleur du dictionnaire2 pour enfin renvoyer les clés correspondantes des deux dictionnaires (car elles sont différentes)?

    Merci d'avance pour votre aide

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 752
    Par défaut
    Salut,

    Pour chaque clef k de D1 comparer les valeurs de D1[k] et D2[k]...
    Pour les détails, votre tuto. préféré doit avoir une table des matières où trouver le chapitre qui parle des dictionnaires. Dans le Swinnen, c'est ici.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2020
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2020
    Messages : 19
    Par défaut
    Merci de votre retour.
    Je crois que mon soucis vient du fait que les clés dans les deux dictionnaires sont différentes....
    Je voudrais comparer les valeurs entre les deux dictionnaires et renvoyer les clées des deux dictionnaires quand lors du parcours il trouve des valeurs différentes.

    Voici un extrait de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    def compare(fichier1,fichier2):
        dico1=func1(fichier1)#Fonction de création d'un dictionnaire pour le premier fichier
        dico2=func2(fichier2)#Fonction de création d'un dictionnaire pour le second fichier
     
        #Comparaison des valeurs entre dico1 et dico2
        for clee in dico1:
            if dico1[clee]!=dico2[clee]:
               return(dico1[clee])
    Sinon j'avais pensé fusionner les deux dictionnaires en un seul pour faire le parcours mais je sais pas si c'est une bonne manière de procéder.

    Merci d'avance pour votre aide.

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 752
    Par défaut
    Salut,

    Citation Envoyé par m01x75 Voir le message
    Je voudrais comparer les valeurs entre les deux dictionnaires et renvoyer les clées des deux dictionnaires quand lors du parcours il trouve des valeurs différentes.
    Désolé mais pour moi c'est un charabia que je ne comprends pas.

    Peut être que d'autres seront plus perspicaces mais je vous suggère de fabriquer
    2 (petits) dictionnaires D1 et D2, les remplir avec des clefs A, B, C, .... des valeurs 1, 2, ... et essayer de visualiser (écrire) le résultat attendu suivant les différents cas.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

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

    Informations forums :
    Inscription : Février 2006
    Messages : 12 835
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par m01x75 Voir le message
    Citation Envoyé par m01x75 Voir le message
    Ces fichiers contiennent des séquences qui peuvent être identiques entre les fichiers et les identifiants qui vont être différents entre les deux fichiers.

    J'ai donc transformé les deux fichiers en dictionnaire. Avec comme clé l’identifiant et en valeur la séquence.
    Je crois que mon soucis vient du fait que les clés dans les deux dictionnaires sont différentes....
    Ben oui. Les identifiants étant différents, ça donne des clefs différentes.

    Citation Envoyé par m01x75 Voir le message
    Je voudrais comparer les valeurs entre les deux dictionnaires et renvoyer les clées des deux dictionnaires quand lors du parcours il trouve des valeurs différentes.
    Hum... étant donné qu'à moins d'avoir deux dictionnaires ne contenant tous deux qu'une seule et même valeur, tu auras toujours au-moins une valeur qui diffère entre les deux (chaque valeur du dico1 sera forcément différente avec au-moins une des valeurs du dico2). Donc si tu te contentes de faire un bête "pour chaque élément1 de dico1, pour chaque élément2 de dico2, si element1 != element2 alors retour" ton algo renverra toujours quelque choses mais ce qu'il renvoie sera-t-il vraiment pertinent ?
    Ah oui, c'est ce que tu as fait !!! Autant écrire alors if dico1.values() != dico2.values(): print(tuple(dico1.values()) + tuple(dico2.values())) ça ira plus vite...

    Citation Envoyé par m01x75 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
        dico1=func1(fichier1)#Fonction de création d'un dictionnaire pour le premier fichier
        dico2=func2(fichier2)#Fonction de création d'un dictionnaire pour le second fichier
    Super. Deux fonctions différentes pour faire la même chose...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. Réponses: 0
    Dernier message: 26/05/2014, 12h23
  2. Réponses: 6
    Dernier message: 02/01/2012, 16h05
  3. Comparaison de valeur dans mon formulaire
    Par bienchris dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 10/02/2010, 15h06
  4. Comparaison de valeurs dans deux Hash
    Par KuK dans le forum Langage
    Réponses: 2
    Dernier message: 10/04/2008, 22h41
  5. Réponses: 10
    Dernier message: 07/12/2006, 20h52

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