Ashwini kumar jha
Ashwini kumar jha

Reputation: 41

search for key in json if key is not present in that array add a default value

I have a json data like:

{'data': [{'shares': {'count': 4}, 
   'id':'226196778181357_353462548788112'},
   {'shares': {'count': 5}, 'id': '226196778181357_353075852160115'},
   {'shares': {'count': 47}, 'id': '226196778181357_350624229071944'},
   {'shares': {'count': 3}, 'id': '226196778181357_350028335798200'},
   {'shares': {'count': 5}, 'id': '226196778181357_349395549194812'},
   {'shares': {'count': 6}, 'id': '226196778181357_348637945937239'},
   {'shares': {'count': 3}, 'id': '226196778181357_342294163238284'},
   {'id': '226196778181357_341686736632360'},
   {'shares': {'count': 1}, 'id': '226196778181357_341024573365243'},
   {'shares': {'count': 9}, 'id': '226196778181357_339828576818176'},
   {'shares': {'count': 5}, 'id': '226196778181357_338017080332659'},
   {'shares': {'count': 10}, 'id': '226196778181357_337493103718390'},
   {'shares': {'count': 1}, 'id': '226196778181357_337432203724480'},
   {'shares': {'count': 12}, 'id': '226196778181357_336955527105481'},
   {'shares': {'count': 7}, 'id': '226196778181357_335994360534931'},
   {'shares': {'count': 11}, 'id': '226196778181357_335979820536385'},
   {'shares': {'count': 7}, 'id': '226196778181357_333787794088921'},
   {'shares': {'count': 5}, 'id': '226196778181357_333174720816895'},
   {'shares': {'count': 14}, 'id': '226196778181357_332554220878945'}]}

I want to search for dict key ={'shares'} in data if not present then add a default dict i.e 'shares': {'count': 0}

the final output will look like:

{'data': [{'shares': {'count': 4}, 
'id':'226196778181357_353462548788112'},
{'shares': {'count': 5}, 'id': '226196778181357_353075852160115'},
{'shares': {'count': 47}, 'id': '226196778181357_350624229071944'},
{'shares': {'count': 3}, 'id': '226196778181357_350028335798200'},
{'shares': {'count': 5}, 'id': '226196778181357_349395549194812'},
{'shares': {'count': 6}, 'id': '226196778181357_348637945937239'},
{'shares': {'count': 3}, 'id': '226196778181357_342294163238284'},
{'shares': {'count': 0},'id': '226196778181357_341686736632360'},
{'shares': {'count': 1}, 'id': '226196778181357_341024573365243'},
{'shares': {'count': 9}, 'id': '226196778181357_339828576818176'},
{'shares': {'count': 5}, 'id': '226196778181357_338017080332659'},
{'shares': {'count': 10}, 'id': '226196778181357_337493103718390'},
{'shares': {'count': 1}, 'id': '226196778181357_337432203724480'},
{'shares': {'count': 12}, 'id': '226196778181357_336955527105481'},
{'shares': {'count': 7}, 'id': '226196778181357_335994360534931'},
{'shares': {'count': 11}, 'id': '226196778181357_335979820536385'},
{'shares': {'count': 7}, 'id': '226196778181357_333787794088921'},
{'shares': {'count': 5}, 'id': '226196778181357_333174720816895'},
{'shares': {'count': 14}, 'id': '226196778181357_332554220878945'}]}

Upvotes: 2

Views: 107

Answers (2)

Mehrdad Pedramfar
Mehrdad Pedramfar

Reputation: 11073

Try this:

for e in j['data']:
    if not 'shares' in e:
        e['shares'] = {'count': 0}

j is json.loads(your_json).

Upvotes: 1

Akhilesha
Akhilesha

Reputation: 21

You can try this

dict_list = [{},{'id':12344},{'shares':{'count':1}, 'id':23456}]

for entry in dict_list:
    if 'shares' not in entry.keys():
        entry['shares']={'count':0}

Output: [{'shares': {'count': 0}}, {'id': 12344, 'shares': {'count': 0}}, {'shares': {'count': 1}, 'id': 23456}]

Upvotes: 1

Related Questions