Wildemar Wildenburger wrote: > Abhishek Jain wrote: >> with every iteration your previous values are overwritten ('md' is a >> dictionary) so thats why your are observing this ouput.. >> >> check if the following patch solves your problem >> >> for entity in temp: >> md['module']= entity.addr.get('module') >> md['id']=entity.addr.get('id') >> md['type']=entity.addr.get('type') >> #print md >> mbusentities.append(md) >> md = {} >> #print mbusentities >> >> >> Regards >> Abhi > This will work, but may I suggest putting the md = {} line at the > *beginning* of the loop? > I find seeing it at the end HIGHLY confusing. Declaring it in the > beginning makes sense, because you declare/initialize, then use it. But > using and *then* initializing it for the next iteration is kind of > quirky, because it breaks the logical encapsulation I would like to see > in *one* loop iteration. > > /W
Hear, hear! to the declaration at the beginning. Just went through a long bug search due to a similar behaviour. Terrible. I try to view the body of a loop as if it were a separate function/method. If it makes sense from that point of view, it will make sense in 3 months. I mean, why would you want ot initialize something when you're done with it? Cheers, Rex -- http://mail.python.org/mailman/listinfo/python-list