Django-fr

Forum

#1 06-05-2011 09:45:38

Tonton
Membre
Inscription : 20-09-2010
Messages : 75

list de dico

Bonjour
je comprend pas mon erreur

je voudrai une liste de dicotionnaire a deux valeur a partir d'un objet là
le groupe mais ça fait pareil avec les autres.

listgrp=Group.objects.all()
dico = {}
for grp in listgrp :
   dico{'id'} = grp.id
   dico{'name'}=grp.name
   listdico.append(dico)

comme j'ai trois groupe je m'attend a voir apparaitre mes tois id et trois
nom de groupe sauf que non

j'ai bien trois dico dans ma liste mais trois fois le meme

{'name':''NomGroupe','id':'2'}{'name':''NomGroupe','id':'2'}{'name':''NomGroupe','id':'2'}

listgrp renvoi bien trois groupe differrent
si quelqu'un voit ou je me trompe ?

T.

Hors ligne

#2 06-05-2011 09:47:55

Rémy HUBSCHER
Membre
Inscription : 11-08-2010
Messages : 161

Re : list de dico

listgrp=Group.objects.all()

for grp in listgrp :
    dico = {}
    dico['id'] = grp.id
    dico['name']=grp.name
    listdico.append(dico)

Programmation Orienté Objet, si tu modifie un objet toutes les
références de cet objet sont modifiées.

Le 06/05/2011 10:45, Tonton a écrit :
> Bonjour
> je comprend pas mon erreur
>
> je voudrai une liste de dicotionnaire a deux valeur a partir d'un
> objet là le groupe mais ça fait pareil avec les autres.
>
> listgrp=Group.objects.all()
> dico = {}
> for grp in listgrp :
>    dico{'id'} = grp.id <[url]http://grp.id[/url]>
>    dico{'name'}=grp.name <[url]http://grp.name[/url]>
>    listdico.append(dico)
>
> comme j'ai trois groupe je m'attend a voir apparaitre mes tois id et
> trois nom de groupe sauf que non
>
> j'ai bien trois dico dans ma liste mais trois fois le meme
>
> {'name':''NomGroupe','id':'2'}{'name':''NomGroupe','id':'2'}{'name':''NomGroupe','id':'2'}
>
> listgrp renvoi bien trois groupe differrent
> si quelqu'un voit ou je me trompe ?
>
> T.
>
>
> _______________________________________________
> django mailing list
> django _AT_ lists.afpy.org
> [url]http://lists.afpy.org/mailman/listinfo/django[/url]

Dernière modification par Rémy HUBSCHER (06-05-2011 09:53:25)

Hors ligne

#3 06-05-2011 09:50:07

Mathieu AGOPIAN
Modérateur
Inscription : 11-08-2010
Messages : 35

Re : list de dico

Met le dico = {} dans ta boucle "for grp in listgrp..."

En python, un nom de variable c'est comme une étiquette, pas comme une
boite. Si tu change ce qui est dans la boite dont l'étiquette est "dico", ça
le change pour "toutes les étiquettes".

Je suis pas certain que mon explication soit claire... désolé si c'est pas
le cas wink

Mathieu

Le 6 mai 2011 10:45, Tonton <to.tonton _AT_ gmail.com> a écrit :

> Bonjour
> je comprend pas mon erreur
>
> je voudrai une liste de dicotionnaire a deux valeur a partir d'un objet là
> le groupe mais ça fait pareil avec les autres.
>
> listgrp=Group.objects.all()
> dico = {}
> for grp in listgrp :
>    dico{'id'} = grp.id
>    dico{'name'}=grp.name
>    listdico.append(dico)
>
> comme j'ai trois groupe je m'attend a voir apparaitre mes tois id et trois
> nom de groupe sauf que non
>
> j'ai bien trois dico dans ma liste mais trois fois le meme
>
>
> {'name':''NomGroupe','id':'2'}{'name':''NomGroupe','id':'2'}{'name':''NomGroupe','id':'2'}
>
> listgrp renvoi bien trois groupe differrent
> si quelqu'un voit ou je me trompe ?
>
> T.
>
> _______________________________________________
> django mailing list
> django _AT_ lists.afpy.org
> http://lists.afpy.org/mailman/listinfo/django
>

Hors ligne

#4 06-05-2011 09:50:40

Mathieu AGOPIAN
Modérateur
Inscription : 11-08-2010
Messages : 35

Re : list de dico

ah et j'imagine que c'est une typo dans ton copier/coller, mais c'est
dico['id'] par dico{'id'}

Le 6 mai 2011 10:50, Mathieu AGOPIAN <mathieu.agopian _AT_ gmail.com> a écrit :

> Met le dico = {} dans ta boucle "for grp in listgrp..."
>
> En python, un nom de variable c'est comme une étiquette, pas comme une
> boite. Si tu change ce qui est dans la boite dont l'étiquette est "dico", ça
> le change pour "toutes les étiquettes".
>
> Je suis pas certain que mon explication soit claire... désolé si c'est pas
> le cas wink
>
> Mathieu
>
> Le 6 mai 2011 10:45, Tonton <to.tonton _AT_ gmail.com> a écrit :
>
>> Bonjour
>> je comprend pas mon erreur
>>
>> je voudrai une liste de dicotionnaire a deux valeur a partir d'un objet là
>> le groupe mais ça fait pareil avec les autres.
>>
>> listgrp=Group.objects.all()
>> dico = {}
>> for grp in listgrp :
>>    dico{'id'} = grp.id
>>    dico{'name'}=grp.name
>>    listdico.append(dico)
>>
>> comme j'ai trois groupe je m'attend a voir apparaitre mes tois id et trois
>> nom de groupe sauf que non
>>
>> j'ai bien trois dico dans ma liste mais trois fois le meme
>>
>>
>> {'name':''NomGroupe','id':'2'}{'name':''NomGroupe','id':'2'}{'name':''NomGroupe','id':'2'}
>>
>> listgrp renvoi bien trois groupe differrent
>> si quelqu'un voit ou je me trompe ?
>>
>> T.
>>
>> _______________________________________________
>> django mailing list
>> django _AT_ lists.afpy.org
>> http://lists.afpy.org/mailman/listinfo/django
>>
>
>
>
> --
> ====================================
> Mathieu AGOPIAN
> +33 (0)6 14 56 96 41
> http://mathieu.agopian.info
> ====================================
>
>

Hors ligne

#5 06-05-2011 09:52:38

Tonton
Membre
Inscription : 20-09-2010
Messages : 75

Re : list de dico

2011/5/6 Rémy Hubscher <hubscher.remy _AT_ gmail.com>

>  listgrp=Group.objects.all()
>
> for grp in listgrp :
>    dico = {}
>
>    dico{'id'} = grp.id
>    dico{'name'}=grp.name
>    listdico.append(dico)
>
>
> Merci pour vos réponse impec ça fonctionne

Hors ligne

Pied de page des forums