Maison >développement back-end >Tutoriel Python >Une brève discussion sur le changement de valeur après l'ajout du dictionnaire à la liste en python
Cet article présente principalement une brève discussion sur le changement de valeur après l'ajout d'un dictionnaire à la liste en Python. Il a une certaine valeur de référence. Maintenant, je le partage avec vous. Les amis dans le besoin peuvent s'y référer
<.> Regardez un exemple
d={'test':1} d_test=d d_test['test']=2 print dSi vous le pratiquez sur la ligne de commande, vous constaterez que ce que vous avez modifié est d_test, mais d a également changé. Souvent, ce n’est pas ce à quoi nous nous attendons.
Pourquoi ?
Parce que le dictionnaire d est un objet, et d_test=d ne crée pas réellement à nouveau le dictionnaire en mémoire. Il pointe simplement vers le même objet. C'est également une considération pour Python pour améliorer les performances et optimiser la mémoire. La scène réelled={"name":""} l=[] for i in xrange(5): d["name"]=i l.append(d) print lLe résultat après la boucle peut ne pas être le même que ce que vous souhaitez. Même s'il est ajouté à la liste, ce qui est stocké dans la liste est toujours un objet, ou l'adresse du dictionnaire. plutôt que l’espace de stockage réel en mémoire. Utilisez la méthode .copy(). Un nouveau dictionnaire indépendant peut être créé
d={"name":""} l=[] for i in xrange(5): test=d.copy() test["name"]=i l.append(test) print l
Mise à jour :
a={'q':1,'w':[]} b=a.copy() b['q']=2 b['w'].append(123) print a print bÀ ce stade, on constate que la valeur de 'q' dans a ne changera pas, mais la valeur dans la liste change toujoursParce que la copie est une copie superficielle Mais il y a une piste ici
a={'q':1,'w':[]} b=a.copy() b['q']=2 b['w']=[123] print a print bSi vous l'attribuez directement, la structure dans a ne sera pas modifié (principalement la relation entre la méthode d'ajout)
Copie détaillée
import copy a={'q':1,'w':[]} b=copy.deepcopy(a)Recommandations associées :
Python crée une liste vide et explique comment utiliser append
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!