2017-11-03 2 views
-2

Ich habe eine JSON-Ausgabe in einer Schleife und am Ende der Schleife muss ich einen eindeutigen Schlüssel dem JSON zuweisen. Etwas wie folgt aus:Eine JSON-Ausgabe in Python neu verschachteln

out = {"34267":{"Annual Expenditure":250,"Annual Frequency":1,"Avg days":null,"First visit":1456012800000,"Frequency":1,"Last visit":1456012800000,"Merchants":32,"Monetory":250,"Recency":621,"Visit_Ids":[116644],"RFMClass":"244","AvgLTV":13305.7692307692},"101":{"Annual Expenditure":250,"Annual Frequency":1,"Avg days":null,"First visit":1423958400000,"Frequency":1,"Last visit":1423958400000,"Merchants":32,"Monetory":250,"Recency":992,"Visit_Ids":[1883],"RFMClass":"444","AvgLTV":13305.7692307692},"8877":{"Annual Expenditure":250,"Annual Frequency":1,"Avg days":null,"First visit":1459900800000,"Frequency":1,"Last visit":1459900800000,"Merchants":32,"Monetory":250,"Recency":576,"Visit_Ids":[141943],"RFMClass":"144","AvgLTV":13305.7692307692}} 

Aber zuweisen etwas wie out_final = {32: out}, macht die innere Json eine Zeichenfolge wie folgt aus:

{32: '{"34267":{"Annual Expenditure":250,"Annual Frequency":1,"Avg days":null,"First visit":1456012800000,"Frequency":1,"Last visit":1456012800000,"Merchants":32,"Monetory":250,"Recency":621,"Visit_Ids":[116644],"RFMClass":"244","AvgLTV":13305.7692307692},"101":{"Annual Expenditure":250,"Annual Frequency":1,"Avg days":null,"First visit":1423958400000,"Frequency":1,"Last visit":1423958400000,"Merchants":32,"Monetory":250,"Recency":992,"Visit_Ids":[1883],"RFMClass":"444","AvgLTV":13305.7692307692},"8877":{"Annual Expenditure":250,"Annual Frequency":1,"Avg days":null,"First visit":1459900800000,"Frequency":1,"Last visit":1459900800000,"Merchants":32,"Monetory":250,"Recency":576,"Visit_Ids":[141943],"RFMClass":"144","AvgLTV":13305.7692307692}}'} 

Dies macht unmöglich für einen bestimmten Wert zu suchen. Gibt es eine Möglichkeit, den eindeutigen Schlüssel zuzuordnen, ohne die innere Struktur zu verlieren?

wie folgt aus:

{32: {"34267":{"Annual Expenditure":250,"Annual Frequency":1,"Avg days":null,"First visit":1456012800000,"Frequency":1,"Last visit":1456012800000,"Merchants":32,"Monetory":250,"Recency":621,"Visit_Ids":[116644],"RFMClass":"244","AvgLTV":13305.7692307692},"101":{"Annual Expenditure":250,"Annual Frequency":1,"Avg days":null,"First visit":1423958400000,"Frequency":1,"Last visit":1423958400000,"Merchants":32,"Monetory":250,"Recency":992,"Visit_Ids":[1883],"RFMClass":"444","AvgLTV":13305.7692307692},"8877":{"Annual Expenditure":250,"Annual Frequency":1,"Avg days":null,"First visit":1459900800000,"Frequency":1,"Last visit":1459900800000,"Merchants":32,"Monetory":250,"Recency":576,"Visit_Ids":[141943],"RFMClass":"144","AvgLTV":13305.7692307692}}} 

Antwort

0

Eine mögliche Lösung ist verschachtelte Wörterbuch erstellen und dann zu json von this konvertieren:

d = df.set_index('Guest').to_dict(orient='index') 
d_final = {32: j} 

import json 
with open('result.json', 'w') as fp: 
    json.dump(d, fp) 
0

Sie einfach { mit {{ wie dies entkommen konnte:

out_final = '{{32:{}}}'.format(out) 
Verwandte Themen