Q:

Increment id during loop in list of collections

I try to increment a list at each iteration of a loop :
ads = []
page = {}
page['titre'] = "Title here"
page['nombre_pages'] = 396

i = 1 
total = 3

while i <= total:
    print(i)
    page['id'] = i
    ads.append(page)
    i += 1 

this return
[{'titre': 'Title here', 'nombre_pages': 396, 'id': 3}, {'titre': 'Title here', 'nombre_pages': 396, 'id': 3}, {'titre': 'Title here', 'nombre_pages': 396, 'id': 3}]

I don't understand why the same id 3 times and not id:1, id:2, id:3
When print page['id'] is ok (increment), ads.append(page['id']) is available too.
Can you help ? 
Thanks

A:

you're only creating a single "page" object, i.e. by doing:
page = {}
and referring to it from several index locations in ads.  you probably want to be doing something closer to:
ads = []

i = 1 
total = 3

while i <= total:
    print(i)
    page = {}
    page['titre'] = "Title here"
    page['nombre_pages'] = 396
    page['id'] = i
    ads.append(page)
    i += 1 

or slightly more idiomatically:
ads = []
total = 3
for i in range(total):
    ads.append({
        'nombre_pages': 396,
        'titre': "Title here",
        'id': i,
    })

