Python problème dictionnaire

Résolu

Bonjour,

pourquoi mes dictionnaires changent tout les deux alors que je fais aucune opération sur un ?

mon code:

def main(names):
    data = {"A": {"up": 1, "down": 2, "right": 3, "left": 4}, "B": {"up": 5, "down": 5, "right": 6, "left": 7}}
    inps = data.copy()
    for letter, key in tuple(data.items()):
        for name, k in tuple(key.items()):
            inps[letter][names[name]] = "ok"
            inps[letter].pop(name)
    print(inps == data)
    print(inps)
    print(data)
    
if __name__ == "__main__":
    main({"up": "haut", "down": "bas", "right": "droite", "left": "gauche"})

(k n'est pas utilisé car j'ai envoyé un exemple)

merci pour votre aide

4 réponses

  1. je sais pas comment fermer une question donc si il y a un modérateur vous pouvez la fermer svp.

    1. J'ai trouvé la solution:

      def main(names):
          data = {"A": {"up": 1, "down": 2, "right": 3, "left": 4}, "B": {"up": 5, "down": 5, "right": 6, "left": 7}}
          inps = {}
          for letter, key in tuple(data.items()):
              inps[letter] = {}
              for name, k in tuple(key.items()):
                  inps[letter][names[name]] = "ok"
                  # inps[letter].pop(name)
          print(inps == data)
          print(inps)
          print(data)
          
      if __name__ == "__main__":
          main({"up": "haut", "down": "bas", "right": "droite", "left": "gauche"})
      1. Bonsoir, la solution, Phil_1857 te l'a donnée, inutile de réinventer la roue.

        from copy import deepcopy
        
        data = {
            "A": {"up": 1, "down": 2, "right": 3, "left": 4},
            "B": {"up": 5, "down": 5, "right": 6, "left": 7},
        }
        inps = deepcopy(data)
      2. @hufy

        je l'ai créer avant de lire le commentaire

    2. Bonjour,

      au lieu de copy, regarde plutôt du coté de deepcopy pour faire une copie vraiment indépendante

      1. merci d'avoir répondu