Partage
  • Partager sur Facebook
  • Partager sur Twitter

Transformer 2 listes en dictionnaire

Sujet résolu
Anonyme
    30 mars 2020 à 20:49:21

    Bonsoir, je suis au TP du cour Python faire un dictionnaire ordonné, j'ai un problème avec la méthode __str__ ou plutôt ce qu'elle renvoie.

    Il faut pouvoir afficher à l'aide de print() un pseudo-dictionnaire qui a pour clés une première liste et comme valeurs une deuxième liste.

    exemple:

    print(objet)

    {'clef': 4, 'clef2': 2}

    J'ai essayé avec ce code:

    class DictionnaireOrdre:
        """classe qui permet se comporte commme un dictionnaire
        mais qui a un ordre précis"""
    
        def __init__(self,**dico):
            """quand l'objet se crée le dictionnaire
            qui est rentré en argument est divisé en 2 listes"""
             
            self.keys = [key for key in dico.keys()]
            self.values = [values for values in dico.values()]
        
        def __delitem__(self, clef):
            """méthode pour supprimer la clef 
            et la valeur"""
            index = self.keys.index(clef)
            del self.values[index]
            del self.keys[index]
        
        def __getitem__(self, clef):
            """méthode appelé quand on fait
            objet[index]"""
            try:
              index = self.keys.index(clef)
              return self.values[index]
            except ValueError:
                raise KeyError("Key {} is not in dict".format(clef))
    
        def __setitem__(self, cle, valeur):
            """méthode qui ajoute cle + valeur 
            au dictionnaire, si la cle existe 
            on écrase la valeur associé, sinon
            on ajoute le couple cle + valeur"""
            
            if cle in self.keys:
                index = self.keys.index(cle)
                self.values[index] = valeur
            else:
                self.keys.append(cle)
                self.values.append(valeur)
    
        def __contains__(self, cle):
            """renvoi true si la cle est dans 
            le dictionnaire ou false si elle 
            n'y est pas"""
    
            if cle in self.keys:
                return True
            else:
                return False
        
        def __len__(self):
            """renvoi le nombre d'items dans
            le dictionnaire"""
    
            return len(self.keys)
        
        def __str__(self):
    
            for index, clef in enumerate(self.keys):
                    dictionnaire = {
                        clef: self.values[index]
                    }
            return dictionnaire
       
              
    
            
    
    

    Quand je fais print(objet) et qu'auparavant j'ai crée deux listes comme listeKeys = [1,2,3,4] et listeValues = ['a','b','c','d']

    le pseudo-dictionnaire renvoyé est {'4': d}, je ne comprend pas pourquoi cela ne me renvoi pas un dictionnaire avec toutes les clefs et valeurs.

    Merci :)

    • Partager sur Facebook
    • Partager sur Twitter
      30 mars 2020 à 22:15:13

      Dans ta méthode str tu dois construire une chaîne de caractères non un objet dictionnaire
      • Partager sur Facebook
      • Partager sur Twitter

      Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
      La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

      Anonyme
        31 mars 2020 à 16:28:28

        D'accord je vais essayer merci .:)
        • Partager sur Facebook
        • Partager sur Twitter

        Transformer 2 listes en dictionnaire

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown