- dictionnaire et mise à jour d'entrée [Python] - Python - Programmation
Marsh Posté le 14-11-2011 à 14:36:47
A priori il faut importer le module copy et procéder comme suit :
Code :
|
on aura bien :
Code :
|
et non :
Code :
|
comme c'était le cas sans le module...
Merci,
R,
Marsh Posté le 19-11-2011 à 15:04:38
luclechanceux a écrit : Bonjour tout le monde,
ensuite je parse
puis je fais
puis je remets asset["entréeN"] à sa valeur |
Salut
Les pointeurs en Python sont très répandus... mais aussi très cachés. Toutefois, toute copie d'objet un tant soi peu complexe ne se fait que par pointeur
Exemple
Code :
|
Alors tu as bien trouvé le truc => passer par le module "copy" qui copie les objets par contenu et non par pointeur. Cependant, la méthode copy.copy s'arrête au premier niveau et le problème persiste si les objets copiés possèdent eux-mêmes des objets complexes
Exemple
Code :
|
Comme tu le vois, la copie s'est arrêtée au premier niveau "key1". Le second objet "key2" a été, lui, copié par adresse.
Si tu veux une copie vraiment séparée quelle que soit la profondeur des objets imbriqués, il te faut utiliser "copy.deepcopy"
Code :
|
Marsh Posté le 14-11-2011 à 11:48:47
Bonjour tout le monde,
Voici mon problème :
J'ai un template de dictionnaire type
ensuite je parse
un dossier pour récupérer des identifiants et affecter ce template à un dictionnaire bcp plus gros (composé donc de pleins d'unité type
asset) que j'enverrai par la suite dans un json. Voila le contexte.
Le souci ici réside dans l'affectation des différentes entrées. Je m'explique imaginons que j'ai un identifiant X avec un paramètre entréeN
à 3. Je procède comme suit,
puis je fais
puis je remets asset["entréeN"] à sa valeur
initiale. Problème dictionnaireGlobal[X]["entréeN"] ne sera pas la valeur 3 mais à la valeur initiale o_O!!!! et bien sur si je ne remets pas
asset["entréeN"] à sa valeur initiale toutes les asset["entréeN"] qui apparaissent dans dictionnaireGlobal sont à 3!!
Au final je souhaiterai donc pouvoir modifier et sauvegarder des données suivant un template défini (sous forme d'un dictionnaire) sans que
cela n'affecte les précédentes sauvegardes. Je me comprends mais je ne sais pas si c'est suffisamment clair... Je flaire un problème de pointeur/valeur
mais si je ne m'abuse la notion de pointeur en python n'est pas trop répandue non?
Et la j'avoue mon ignorance, ou alors je suis passé à coté de qqc d'évident auquel cas je vous prie d'excuser le dérangement.
Merci d'avance pour votre aide,
R,
Message édité par luclechanceux le 14-11-2011 à 14:16:06