Python: Konvertieren einer Liste von Wörterbüchern in json


81

Ich habe eine Liste von Wörterbüchern, die ungefähr so ​​aussehen:

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

und so weiter. Möglicherweise enthält die Liste weitere Dokumente. Ich muss diese in ein JSON-Dokument konvertieren, das per Flasche zurückgegeben werden kann, und ich kann nicht verstehen, wie das geht. Bitte helfen Sie. Ich habe ähnliche Fragen auf dieser Website gesehen, aber ich konnte die Lösungen dort nicht verstehen.

Antworten:


118

Verwenden Sie die JSON-Bibliothek

import json
json.dumps(list)

listÜbrigens könnten Sie in Betracht ziehen, die Variablenliste in einen anderen Namen zu ändern. Dies ist die integrierte Funktion für eine Listenerstellung. Wenn Sie den Variablennamen nicht ändern, können unerwartete Verhaltensweisen oder fehlerhafter Code auftreten.


1
In Ordnung. Dies ist nur ein Beispiel, und ich verwende dafür den Namen mylist. Funktioniert dumps () auch für Listen? Ich dachte, es sollte nur für Diktate verwendet werden.
Apoorv Ashutosh

Ist es möglich, die Datei als JSON Column Array oder JSON Row Array zu speichern?
Anoop Toffy

HINWEIS: Das Neuzuweisen der Liste (list = [1,2,3]) steht in Konflikt mit der integrierten Methodenliste (). bitte bedenke.
Nikil Swami

25
import json

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

In json-Datei schreiben:

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

Json-Datei lesen:

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]}]

HINWEIS: Das Neuzuweisen der Liste (list = [1,2,3]) steht in Konflikt mit der integrierten Methodenliste (). bitte bedenke.
Nikil Swami

1
response_json = ("{ \"response_json\":" + str(list_of_dict)+ "}").replace("\'","\"")
response_json = json.dumps(response_json)
response_json = json.loads(response_json)

2
Hallo! Während dies das Problem von OP lösen kann, wird im Allgemeinen davon abgeraten, nur Code-Antworten auf SO zu schreiben. Bitte erläutern Sie, warum dies eine Lösung für das Problem darstellt, da dies OP hilft, die Website besser zu verstehen und zukünftigen Besuchern der Website zugute zu kommen. Vielen Dank!
d_kennetz

0

Verwenden Sie den folgenden Code, um es in ein einzelnes Wörterbuch mit einem bestimmten Schlüsselwert zu konvertieren.

data = ListOfDict.copy()
PrecedingText = "Obs_"
ListOfDictAsDict = {}
for i in range(len(data)):
    ListOfDictAsDict[PrecedingText + str(i)] = data[i]
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.