Strange object identity problem

F.R. anthra.norell at bluewin.ch
Tue Nov 13 08:08:16 CET 2012


On 11/12/2012 06:02 PM, duncan smith wrote:
> On 12/11/12 13:40, F.R. wrote:
>> On 11/12/2012 02:27 PM, Robert Franke wrote:
>>> Hi Frederic,
>>>
>>> [...]
>>>
>>>>>>> bas = {}
>>>>>>> for year in range (2010, 2013):
>>>>      ba = st.runs ('BA', '%d-01-01' % year, '%d-12-31' % year)
>>>>      ba.run ()
>>>> print year, id (ba)
>>>>      bas [year] = ba
>>>>
>>>> 2010 150289932
>>>> 2011 150835852
>>>> 2012 149727788
>>>>
>>>>>>> for y in sorted (bas.keys ()):
>>>>      b = bas [year]
>>> Shouldn't that be b = bas[y]?
>> Yes, it should, indeed! What's more, I should have closed and restarted
>> IDLE. There must have
>> been a name clash somewhere in the name space. The problem no longer
>> exists. Sorry
>> about that. And thanks to all who paused to reflect on this non-problem.
>> - Frederic.
>>
>>>
>>>
>>>>      print y, id (b)
>>>>
>>>> 2010 149727788
>>>> 2011 149727788
>>>> 2012 149727788
>>>>
>>> [...]
>>>
>>> Cheers,
>>>
>>> Robert
>>>
>>
>
> The problem was that year was bound to the integer 2013 from the first 
> loop. When you subsequently looped over the keys you printed each key 
> followed by id(bas[2013]). Restarting IDLE only helped because you 
> presumably didn't repeat the error.
>
> Duncan
>
That's it! Isn't it strange how on occasion one doesn't see the most 
obvious and simple mistake, focusing beyond the realm of foolishness. 
Thanks all . . .

Frederic



More information about the Python-list mailing list