Как пройти через каждый элемент моего цикла for, чтобы получить значения этого json? - PullRequest
0 голосов
/ 21 октября 2019

JSON, который я пытаюсь разобрать, имеет сложную структуру. В полном списке есть 311 словарей, из которых мне удалось получить некоторые ключевые значения. Однако в каждом из этих 311 словарей есть ключ 'cadCargosFuncoes', значением которого является словарь с одним ключом, а само значение является списком словарей.

Мне нужно, чтобы для каждого из этих 311 словарей json было взято значение ключа 'funDes' в каждом из его n словарей, где n не всегда одинаково и не гарантируетсяотличаться от нуля.

Я пытался ввести цикл:

for i in ['cadCargosFuncoes']['pt_ar_wsgode_objectos_DadosCargosFuncoes']`

несколькими способами, но так и не смог добиться того, что мне нужно.

import requests
import json
import csv
from csv import DictWriter

r = requests.get('http://app.parlamento.pt/webutils/docs/doc.txt?path=6148523063446f764c324679626d56304c3239775a57356b595852684c3052685a47397a51574a6c636e5276637939535a576470633352764a544977516d6c765a334c446f575a705932387657456c4a535355794d45786c5a326c7a6247463064584a684c314a6c5a326c7a644739436157396e636d466d61574e7657456c4a53563971633239754c6e523464413d3d&fich=RegistoBiograficoXIII_json.txt&Inline=true')
r.raise_for_status()
data = r.json()

mps = data['RegistoBiografico']['RegistoBiograficoList']['pt_ar_wsgode_objectos_DadosRegistoBiograficoWeb']

for j in mps:
    if 'cadProfissao' in j:
        pass
    else:
        j['cadProfissao'] = '-88'

for j in mps:
    if 'cadDtNascimento' in j:
        pass
    else:
        j['cadDtNascimento'] = '-88'

result = [{"ID": j["cadId"], "Nome": j["cadNomeCompleto"], "Sexo": j["cadSexo"], "D-Nasc": j["cadDtNascimento"], "Profissao": j["cadProfissao"]} for j in mps]

with open('bio_xiii.csv', 'w') as outfile:
    writer = DictWriter(outfile, ('ID', 'Nome', 'Sexo', 'D-Nasc', 'Profissao'))
    writer.writerows(result)

В настоящее время мой CSV-файл содержит 311 строк, с 'cadId', 'cadNomeCompleto', 'cadSexo', 'cadDtNascimento' и 'cadProfissao'. Я хочу m дополнительных столбцов, где m - максимальное количество словарей с ключом 'funDes' для этих 311 словарей, так что каждая ячейка содержит значение 'funDes', когда такое значение существует, и '-88' когда он не существует (когда он равен нулю или максимальное количество словарей с 'funDes' меньше, чем m, для некоторых из этих 311 словарей).

Может кто-нибудь дать несколько советов о том, какчтобы решить это?

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