list.append not working?
infidel
saint.infidel at gmail.com
Thu Jul 5 12:07:18 EDT 2007
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.
More information about the Python-list
mailing list