Ich habe eine Schleife, in der ich ein JSON-Objekt bearbeite und an eine Liste anschließe. Aber außerhalb der Schleife, wird der Wert aller alten Elemente auf die neue geändert
Meine Frage ist ähnlich wie this man hier, aber ich kann immer noch keine Lösung für mein Problem finden.list.append() ersetzt jede neue Variable
Das ist mein Code:
json_data = open(filepath).read()
data = json.loads(json_data)
dataNew=[]
#opening file to write json
with open(filepath2, 'w') as outfile:
for i in range(50):
random_index_IntentNames = randint(0,len(intent_names)-1)
random_index_SessionIds = randint(0,len(session_id)-1)
timestamp = strftime("%Y-%m-%d %H:%M:%S", gmtime())
data["result"]["metadata"]["intentName"] = intent_names[random_index_IntentNames]
data["sessionId"]=session_id[random_index_SessionIds]
data["timestamp"] = timestamp
dataNew.append(data)
json.dump(dataNew, outfile, indent=2)
'Daten' ist ein Wörterbuch-Objekt. Sie hängen jedes Mal Referenzen auf das gleiche Objekt an. Wenn Sie also das Diktat ändern, wird die Änderung in der Liste widergespiegelt (jeder Eintrag in Ihrer Liste verweist auf das gleiche, einzelne Wörterbuch). Sie müssen tiefe Kopien des Diktats anhängen, damit sie nicht dasselbe Objekt im Speicher sind. Das ist im Grunde die Antwort, mit der Sie verbunden sind. – roganjosh
Hallo @roganjosh. Ich bin ein Anfänger für Python-Programmierung, weshalb ich nicht genau verstehe. Wenn Sie eine Lösung haben, können Sie Änderungen an meinem Code vornehmen, damit er nach Bedarf funktioniert? –