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