Estoy jugando con 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 salida:

[{"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

1
Link 27 oct. 2017 a las 15:33

4 respuestas

La mejor respuesta
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 de while.

2
Zac 30 oct. 2017 a las 14:25

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
1
Marco 27 oct. 2017 a las 14:18

Algo como esto debería funcionar. Solo asegúrese de incluir todas sus variables en una lista y añádalas 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)
1
Chris 27 oct. 2017 a las 12:42

Puedes hacerlo como a continuación:

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)
3
Naresh Chaudhary 27 oct. 2017 a las 12:41