Salida de bucle incorrecta de JSON en Python

Estoy jugando con el formato JSON y hay un pequeño problema con este código (muy simple).

import json bol = [] caus = [] num = [] idx = 0 count = [idx] while idx < 10: idx += 1 bollettini = \ { 'Nome bollettino': 'Bollettino ' + str(idx) } causale = \ { 'Causale': str(idx) } numero = \ { 'Numero': str(idx) } bol.append(bollettini) caus.append(causale) num.append(numero) data = (bol+caus+num) json_data = json.dumps(data) print(json_data) 

Imprime esto:

 [{"Nome bollettino": "Bollettino 1"}, {"Causale": "1"}, {"Numero": "1"}] [{"Nome bollettino": "Bollettino 1"}, {"Nome bollettino": "Bollettino 2"}, {"Causale": "1"}, {"Causale": "2"}, {"Numero": "1"}, {"Numero": "2"}] [{"Nome bollettino": "Bollettino 1"}, {"Nome bollettino": "Bollettino 2"}, {"Nome bollettino": "Bollettino 3"}, {"Causale": "1"}, {"Causale": "2"}, {"Causale": "3"}, {"Numero": "1"}, {"Numero": "2"}, {"Numero": "3"}] [{"Nome bollettino": "Bollettino 1"}, {"Nome bollettino": "Bollettino 2"}, {"Nome bollettino": "Bollettino 3"}, {"Nome bollettino": "Bollettino 4"}, {"Causale": "1"}, {"Causale": "2"}, {"Causale": "3"}, {"Causale": "4"}, {"Numero": "1"}, {"Numero": "2"}, {"Numero": "3"}, {"Numero": "4"}] [{"Nome bollettino": "Bollettino 1"}, {"Nome bollettino": "Bollettino 2"}, {"Nome bollettino": "Bollettino 3"}, {"Nome bollettino": "Bollettino 4"}, {"Nome bollettino": "Bollettino 5"}, {"Causale": "1"}, {"Causale": "2"}, {"Causale": "3"}, {"Causale": "4"}, {"Causale": "5"}, {"Numero": "1"}, {"Numero": "2"}, {"Numero": "3"}, {"Numero": "4"}, {"Numero": "5"}] [{"Nome bollettino": "Bollettino 1"}, {"Nome bollettino": "Bollettino 2"}, {"Nome bollettino": "Bollettino 3"}, {"Nome bollettino": "Bollettino 4"}, {"Nome bollettino": "Bollettino 5"}, {"Nome bollettino": "Bollettino 6"}, {"Causale": "1"}, {"Causale": "2"}, {"Causale": "3"}, {"Causale": "4"}, {"Causale": "5"}, {"Causale": "6"}, {"Numero": "1"}, {"Numero": "2"}, {"Numero": "3"}, {"Numero": "4"}, {"Numero": "5"}, {"Numero": "6"}] [{"Nome bollettino": "Bollettino 1"}, {"Nome bollettino": "Bollettino 2"}, {"Nome bollettino": "Bollettino 3"}, {"Nome bollettino": "Bollettino 4"}, {"Nome bollettino": "Bollettino 5"}, {"Nome bollettino": "Bollettino 6"}, {"Nome bollettino": "Bollettino 7"}, {"Causale": "1"}, {"Causale": "2"}, {"Causale": "3"}, {"Causale": "4"}, {"Causale": "5"}, {"Causale": "6"}, {"Causale": "7"}, {"Numero": "1"}, {"Numero": "2"}, {"Numero": "3"}, {"Numero": "4"}, {"Numero": "5"}, {"Numero": "6"}, {"Numero": "7"}] [{"Nome bollettino": "Bollettino 1"}, {"Nome bollettino": "Bollettino 2"}, {"Nome bollettino": "Bollettino 3"}, {"Nome bollettino": "Bollettino 4"}, {"Nome bollettino": "Bollettino 5"}, {"Nome bollettino": "Bollettino 6"}, {"Nome bollettino": "Bollettino 7"}, {"Nome bollettino": "Bollettino 8"}, {"Causale": "1"}, {"Causale": "2"}, {"Causale": "3"}, {"Causale": "4"}, {"Causale": "5"}, {"Causale": "6"}, {"Causale": "7"}, {"Causale": "8"}, {"Numero": "1"}, {"Numero": "2"}, {"Numero": "3"}, {"Numero": "4"}, {"Numero": "5"}, {"Numero": "6"}, {"Numero": "7"}, {"Numero": "8"}] [{"Nome bollettino": "Bollettino 1"}, {"Nome bollettino": "Bollettino 2"}, {"Nome bollettino": "Bollettino 3"}, {"Nome bollettino": "Bollettino 4"}, {"Nome bollettino": "Bollettino 5"}, {"Nome bollettino": "Bollettino 6"}, {"Nome bollettino": "Bollettino 7"}, {"Nome bollettino": "Bollettino 8"}, {"Nome bollettino": "Bollettino 9"}, {"Causale": "1"}, {"Causale": "2"}, {"Causale": "3"}, {"Causale": "4"}, {"Causale": "5"}, {"Causale": "6"}, {"Causale": "7"}, {"Causale": "8"}, {"Causale": "9"}, {"Numero": "1"}, {"Numero": "2"}, {"Numero": "3"}, {"Numero": "4"}, {"Numero": "5"}, {"Numero": "6"}, {"Numero": "7"}, {"Numero": "8"}, {"Numero": "9"}] [{"Nome bollettino": "Bollettino 1"}, {"Nome bollettino": "Bollettino 2"}, {"Nome bollettino": "Bollettino 3"}, {"Nome bollettino": "Bollettino 4"}, {"Nome bollettino": "Bollettino 5"}, {"Nome bollettino": "Bollettino 6"}, {"Nome bollettino": "Bollettino 7"}, {"Nome bollettino": "Bollettino 8"}, {"Nome bollettino": "Bollettino 9"}, {"Nome bollettino": "Bollettino 10"}, {"Causale": "1"}, {"Causale": "2"}, {"Causale": "3"}, {"Causale": "4"}, {"Causale": "5"}, {"Causale": "6"}, {"Causale": "7"}, {"Causale": "8"}, {"Causale": "9"}, {"Causale": "10"}, {"Numero": "1"}, {"Numero": "2"}, {"Numero": "3"}, {"Numero": "4"}, {"Numero": "5"}, {"Numero": "6"}, {"Numero": "7"}, {"Numero": "8"}, {"Numero": "9"}, {"Numero": "10"}] 

Es diferente de lo que quiero lograr, que es este tipo de resultado:

 [{"Nome bollettino": "Bollettino 1"}, {"Causale": "1"}, {"Numero": "1"}] [{"Nome bollettino": "Bollettino 2"}, {"Causale": "2"}, {"Numero": "2"}] [{"Nome bollettino": "Bollettino 3"}, {"Causale": "3"}, {"Numero": "3"}] [{"Nome bollettino": "Bollettino 4"}, {"Causale": "4"}, {"Numero": "4"}] 

y así sucesivamente hasta que se cumpla la condición.

Cómo hacerlo ?

Gracias

 import json idx = 0 count = [idx] while idx < 10: bol = [] caus = [] num = [] idx += 1 bollettini = \ { 'Nome bollettino': 'Bollettino ' + str(idx) } causale = \ { 'Causale': str(idx) } numero = \ { 'Numero': str(idx) } bol.append(bollettini) caus.append(causale) num.append(numero) data = (bol+caus+num) json_data = json.dumps(data) print(json_data) 

Esto debería hacer.

La solución es vaciar la lista bol , caus y num cada vez, o inicializarlos dentro del while .

Puedes hacerlo como abajo:

 json_data = [] idx = 0 while idx < 10: idx += 1 data =[ { 'Nome bollettino': 'Bollettino ' + str(idx) }, { 'Causale': str(idx) }, { 'Numero': str(idx) }] json_data.append(data) print(json_data) 

Algo como esto debería funcionar. Solo asegúrese de poner todas sus variables en una lista y adjúntelas a su lista final de listas.

 import json idx_range = 10 data = [] for idx in range(1, idx_range): bollettini = {'Nome bollettino': 'Bollettino ' + str(idx)} causale = {'Causale': str(idx)} numero = {'Numero': str(idx)} data.append([bollettini, causale, numero]) json_data = json.dumps(data) print(json_data) 

O así:

 import json idx = 0 count = [idx] data = [] while idx < 10: idx += 1 bollettini = {'Nome bollettino': 'Bollettino ' + str(idx) } causale = {'Causale': str(idx) } numero = {'Numero': str(idx) } data.append([bollettini]+[causale]+[numero]) json_data = json.dumps(data) print (json_data) #added parenthesis