list.append not working?

Hardy hhartwig at gmail.com
Thu Jul 5 12:17:03 EDT 2007


On 5 Jul., 18:07, infidel <saint.infi... at gmail.com> wrote:
> On Jul 5, 8:58 am, Hardy <hhart... at gmail.com> wrote:
>
>
>
> > I experience a problem with append(). This is a part of my code:
>
> >         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)
> >             #print mbusentities
>
> > I want something like: [{'module': 'home', 'id': 123, 'type': 'core'},
> > {'module': 'work', 'id': 456, 'type': 'core'}]
> > md is always correct, BUT:mbusentities is wrong. Length of
> > mbusentities is same of temp, so it appended everything. BUT:
> > mbusentities only shows the values of the last append: [{'module':
> > 'work', 'id': 456, 'type': 'core'}, {'module': 'work', 'id': 456,
> > 'type': 'core'}]
>
> > What's wrong?
>
> You're reusing the same "md" dictionary over and over, appending the
> same object to the list each time.  So what you have is a list of
> references to the same dictionary.  You need to set md = {} first
> thing each iteration.

Thanks, that was my mistake, should take a break, getting code-blind :D




More information about the Python-list mailing list