Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Como retornar todos os itens da lista em um json?

Fiz a seguinte função:

list = ["a","b", "c"]
def return_data(list):
    for item in list:
        return {
            "dado": item
        }

e o output foi esse:

In [121]: return_data(list)
Out[121]: {'dado': 'a'}

Porém, eu esperava que o output fosse:

{"dado": "a"},
{"dado": "b"},
{"dado": "c"},

Outra opção de output esperado:

[
    0: {
        "dado": "a"
    },
    1: {
        "dado": "b"
    },
    2: {
        "dado": "c"
    },
]

ou seja, que todos os dados da lista fosse impressos quando eu desse o return.

Por favor, poderiam me ajudar a entender onde eu errei?

Obrigado

2 respostas

A palavra return encerra a execução da função, pois se entende que ela atingiu o objetivo de gerar um retorno, ou seja o laço for é interrompido assim que aparece a palavra return. Se seu objetivo for só gerar uma saída no console como a informada, você pode usar a função print().

solução!

Como o colega comentou acima, o return encerra a função imediatamente.

Há diferentes formas de obter o resultado esperado.

Pessoalmente eu retornaria um list comprehension.

def return_data(lista):
    return [{'dado': d} for d in lista]

Alguns observações:

Apesar da semelhança, trata-se de um dict e não json.

Não se deve usar o nome list para variáveis, pois é um nome reservado. Use lista ou my_list se quiser algo genérico.