поиск ключа в json, если ключ отсутствует в этом массиве, добавьте значение по умолчанию - PullRequest
0 голосов
/ 21 ноября 2018

У меня есть данные в формате json, такие как:

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

Я хочу найти ключ данных = {'shares'} в данных, если их нет, затем добавить dict по умолчанию, т.е. 'shares': {'count': 0}

конечный результат будет выглядеть так:

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

Ответы [ 2 ]

0 голосов
/ 21 ноября 2018

Попробуйте:

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

j - это json.loads(your_json).

0 голосов
/ 21 ноября 2018

Вы можете попробовать это

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

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

Вывод: [{'shares': {'count': 0}}, {'id': 12344, 'shares': {'count': 0}}, {'shares': {'count': 1}, 'id': 23456}]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...