que je vois un comportement inhabituel en Python Dictionnaire:Changer une valeur dict change toutes les valeurs
import numpy as np
td =[np.Inf, 2, 3]
a = {}
# First initialize contents of dictionary to a list of values
for k in range(10):
a[k] = td
#now I want to access the contents to modify them based on certain criteria
for k in range(10):
c = a[k]
c[0] = k
a[k] = c
A partir de ce que je me attends à chaque premier élément de la liste pour chaque valeur clé de dictionnaire à modifier en fonction de (c [0] = k), cependant, ce que je reçois à la fin est que toutes les valeurs du dictionnaire sont mis à jour à la dernière valeur de k: comme dans
{0: [9, 2, 3], 1: [9, 2, 3], 2: [9, 2, 3], 3: [9, 2, 3],
4: [9, 2, 3], 5: [9, 2, 3], 6: [9, 2, 3], 7: [9, 2, 3],
8: [9, 2, 3], 9: [9, 2, 3]}
est-ce que je manque quelque chose, ou il y a quelque chose de mal dans la définition du dictionnaire? Je peux contourner ce problème de façon différente pour mon code, mais je m'intéresse à la raison pour laquelle la classe de dictionnaire se comporterait de cette façon.
Merci, Mon impression était que la valeur de (td) serait réinitialisée à chaque fois, par exemple, ancienne valeur détruite, chaque nouvelle affectation, cependant, je sais maintenant que le dictionnaire se comporte différemment. :) – Nader
@Nader ce n'est pas le dictionnaire .... Si vous avez fait 'mylist = []; pour i dans la plage (10): mylist.append (el) 'vous auriez la même chose :) –
Je comprends que, cependant, je m'attendrais à ce que si je change la valeur de (el) à l'intérieur de la boucle, alors le la valeur ajoutée changerait en conséquence (par exemple mylist = []; pour i dans la plage (10): el = i; mylist.append (el)), ce qui est le cas dans ce cas, mais pas pour le dictionnaire. – Nader