-2

I have a json output in a loop and at the end of the loop I need to assign a unique key to the json. Something like the following :

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

But assign something like out_final = {32: out}, makes the inner Json a string like the following :

{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}}'}

This makes searching for a specific value impossible. Is there a way where I can assign the unique key without losing the inner structure.

Like the following :

{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}}}
0

2 Answers 2

0

One possible solution is create nested dictionary and then convert to json by this:

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)
Sign up to request clarification or add additional context in comments.

Comments

0

You could simply escape { with {{ as this:

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

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.