Python: convertir una lista de diccionarios a json

82

Tengo una lista de diccionarios que se parecen a esto:

list = [{'id': 123, 'data': 'qwerty', 'indices': [1,10]}, {'id': 345, 'data': 'mnbvc', 'indices': [2,11]}]

y así. Puede haber más documentos en la lista. Necesito convertirlos en un documento JSON, que se puede devolver a través de una botella, y no puedo entender cómo hacerlo. Por favor ayuda. Vi preguntas similares en este sitio web, pero no pude entender las soluciones allí.

Apoorv Ashutosh
fuente

Respuestas:

118

usar la biblioteca json

import json
json.dumps(list)

por cierto, podría considerar cambiar la lista de variables a otro nombre, listes la función incorporada para la creación de una lista, puede obtener algunos comportamientos inesperados o algún código con errores si no cambia el nombre de la variable.

Markcial
fuente
1
Bueno. Esto es solo una muestra, y estoy usando el nombre mylist para esto. ¿Los volcados () también funcionan para listas? Pensé que solo se suponía que debía usarse para dictados.
Apoorv Ashutosh
¿Es posible guardar el archivo como JSON Column Array o JSON Row Array?
Anoop Toffy
NOTA: reasignar lista (lista = [1,2,3]) entra en conflicto con el método incorporado list (). por favor ten en cuenta.
nikhil swami
25
import json

list = [{'id': 123, 'data': 'qwerty', 'indices': [1,10]}, {'id': 345, 'data': 'mnbvc', 'indices': [2,11]}]

Escribir en el archivo json:

with open('/home/ubuntu/test.json', 'w') as fout:
    json.dump(list , fout)

Leer archivo Json:

with open(r"/home/ubuntu/test.json", "r") as read_file:
    data = json.load(read_file)
print(data)
#list = [{'id': 123, 'data': 'qwerty', 'indices': [1,10]}, {'id': 345, 'data': 'mnbvc', 'indices': [2,11]}]
Ramineni Ravi Teja
fuente
NOTA: reasignar lista (lista = [1,2,3]) entra en conflicto con el método incorporado list (). por favor ten en cuenta.
nikhil swami
1
response_json = ("{ \"response_json\":" + str(list_of_dict)+ "}").replace("\'","\"")
response_json = json.dumps(response_json)
response_json = json.loads(response_json)
Akhilesh Joshi
fuente
2
¡Hola! Si bien esto puede resolver el problema de OP, generalmente se desaconseja escribir solo respuestas de código en SO. Proporcione una explicación de por qué esto es una solución al problema, ya que ayudará a OP a comprender mejor y beneficiará a los futuros visitantes del sitio. ¡Gracias!
d_kennetz
0

Para convertirlo en un solo diccionario con algunos valores de claves decididos, puede usar el siguiente código.

data = ListOfDict.copy()
PrecedingText = "Obs_"
ListOfDictAsDict = {}
for i in range(len(data)):
    ListOfDictAsDict[PrecedingText + str(i)] = data[i]
Mohit Rajput
fuente