Python problème dictionnaire
Résolu
Flayme
-
Flayme -
Flayme -
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
A voir également:
- Python problème dictionnaire
- Télécharger dictionnaire larousse pdf gratuit - Télécharger - Dictionnaires & Langues
- Télécharger dictionnaire médical larousse gratuit pdf - Télécharger - Dictionnaires & Langues
- Citizen code python avis - Accueil - Outils
- Dictionnaire synonyme gratuit - Télécharger - Études & Formations
- Télécharger dictionnaire informatique gratuit pdf - Télécharger - Bureautique
4 réponses
Bonjour,
au lieu de copy, regarde plutôt du coté de deepcopy pour faire une copie vraiment indépendante
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"})
merci d'avoir répondu