In the first example, you have only a single dictionary (created outside 
the loop). You then append that single dictionary to a list multiple times. 
Each item in the list is still just that single dictionary (you are not 
creating separate copies of the dictionary). In the first loop, you are 
setting all the values to 0, so when you print, you see 0's. In the next 
loop, you set all the values to 1, so you then see 1's. But in the final 
loop, you set all the values to 2. So, when you finally print the full list 
(after the for loop), you are just printing the same dictionary of 2's 
three times.

In the second example, you create a completely new dictionary within each 
iteration of the loop (which you happen to assign to the same variable 
name). In this case, you are building a list with three separate 
dictionaries, each of which contains different values.

In both examples, replace the final line of the loop with:

    temp.append(id(temp1))

You will see in the first case that you get the same id three times 
(indicating it is the same dictionary object), but in the second case, you 
will get three different ids (indicating three different dictionary 
objects).

Anthony

On Wednesday, April 1, 2015 at 8:34:56 AM UTC-4, Ramos wrote:
>
> The 2nd example is bullet proof.
>
> However the 1st example should work also because if i print temp1 before 
> append temp1 to the temp var i see it like 
>
> {'a': 0, 'c': 0, 'b': 0}
> {'a': 1, 'c': 1, 'b': 1}
> {'a': 2, 'c': 2, 'b': 2}
>
> temp=[]
> temp1={'a':0,'b':0,'c':0}
> for x in range(3):
>     temp1['a']=x
>     temp1['b']=x
>     temp1['c']=x
>     *print temp1*
>     temp.append(temp1)
> print temp
>
> Still dont get it
>
> 2015-04-01 12:47 GMT+01:00 Leonel Câmara <[email protected]>:
>
>> The difference is that in the second example you're creating the 
>> dictionary inside the loop. In the first example you create the dictionary 
>> outside so each step of the loop is modifying the same dictionary and then 
>> you put that same dictionary 3 times in the list.
>>
>> -- 
>> Resources:
>> - http://web2py.com
>> - http://web2py.com/book (Documentation)
>> - http://github.com/web2py/web2py (Source code)
>> - https://code.google.com/p/web2py/issues/list (Report Issues)
>> --- 
>> You received this message because you are subscribed to the Google Groups 
>> "web2py-users" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to [email protected].
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to