user1742716
user1742716

Reputation: 29

add key value in nested dictionary

datainput = {'thissong-fav-user:type1-chan-44-John': [{'Song': 'Rock',
                                                       'Type': 'Hard',
                                                       'Price': '10'}],
             'thissong-fav-user:type1-chan-45-kelly-md': [{'Song': 'Rock',
                                                           'Type': 'Soft',
                                                           'Price': '5'}]}

Outputrequired:

{'thissong-fav-user:type1-chan-44-John': [{key:'Song',Value:'Rock'},
                                          {key:'Type', Value:'Hard'},
                                          {Key: 'Price', Value:'10'}],
 'thissong-fav-user:type1-chan-45-kelly-md': [{key:'Song',Value:'Rock'},
                                              {key:'Type', Value:'Soft'},
                                              {Key: 'Price', Value:'5'}]}

I started with below, which gives me an inner nested pattern not sure how I can get the desired output.

temps = [{'Key': key, 'Value': value} for (key, value) in datainput.items()] 

Upvotes: 1

Views: 45

Answers (2)

sujal maiti
sujal maiti

Reputation: 11

I believe the way of having taken the input is fine but in order to get the desired output, you got to take the inputs initially, then key-value pair and finally iterate.

datainput = {'thissong-fav-user:type1-chan-44-John': [{'Song': 'Rock',
                                                       'Type': 'Hard',
                                                       'Price': '10'}],
             'thissong-fav-user:type1-chan-45-kelly-md': [{'Song': 'Rock',
                                                           'Type': 'Soft',
                                                           'Price': '5'}]}
datainput = {k:[{'Key':a, 'Value':b} for a,b in v[0].items()] for k,v in datainput.items()}

print(datainput)

Most probably, you'll get the desired output in this fashion.

Upvotes: 1

Red
Red

Reputation: 27577

Here is how:

datainput = {'thissong-fav-user:type1-chan-44-John': [{'Song': 'Rock',
                                                       'Type': 'Hard',
                                                       'Price': '10'}],
             'thissong-fav-user:type1-chan-45-kelly-md': [{'Song': 'Rock',
                                                           'Type': 'Soft',
                                                           'Price': '5'}]}
temps = {k:[{'Key':a, 'Value':b}
            for a,b in v[0].items()]
         for k,v in datainput.items()}

print(datainput)

Output:

{'thissong-fav-user:type1-chan-44-John': [{'Key': 'Song', 'Value': 'Rock'},
                                          {'Key': 'Type', 'Value': 'Hard'},
                                          {'Key': 'Price', 'Value': '10'}],
 'thissong-fav-user:type1-chan-45-kelly-md': [{'Key': 'Song', 'Value': 'Rock'},
                                              {'Key': 'Type', 'Value': 'Soft'},
                                              {'Key': 'Price', 'Value': '5'}]}

Upvotes: 1

Related Questions