I want an output like this:
 [{'a': 0}, {'a': 1}, {'a': 2}, {'a': 3}]
But I am getting this output:
  [{'a': 3}, {'a': 3}, {'a': 3}, {'a': 3}]
I tried the below code:
  l = []
  d = {}
  for i in range(0,4):
     d['a'] = i
     print("dictinary ",d)
     print("list before appending ",l)
     l.append(d)
     print("list after appending ",l)
  print(l)
I am getting the below output after applying print statements(for debugging)
    dictinary  {'a': 0}
    list before appending  []
    list after appending  [{'a': 0}]
    dictinary  {'a': 1}
    list before appending  [{'a': 1}]
    list after appending  [{'a': 1}, {'a': 1}]
    dictinary  {'a': 2}
    list before appending  [{'a': 2}, {'a': 2}]
    list after appending  [{'a': 2}, {'a': 2}, {'a': 2}]
    dictinary  {'a': 3}
    list before appending  [{'a': 3}, {'a': 3}, {'a': 3}]
    list after appending  [{'a': 3}, {'a': 3}, {'a': 3}, {'a': 3}]
    [{'a': 3}, {'a': 3}, {'a': 3}, {'a': 3}]
I cannot understand one thing: Why my list value is getting changed on changing dictionary value ? i.e. On executing line no 4 in code, the value of the list is automatically getting changed(See line no 5 of output). Please suggest something.
 
     
    