Невозможно перенастроить несколько наборов диктитонов в python - PullRequest
0 голосов
/ 11 апреля 2020

Я запрашиваю URL REST API и пытаюсь вернуть все наборы словарей, но могу вернуть только одну пару ключей. Вывод словаря в инструкции print внутри для l oop - это ожидаемый вывод, когда при возврате появляется только один набор пар ключей. Ожидаемый словарь выглядит так:

    {'IncidentID': 'IM10265'}
    {'IncidentID': 'IM10266'}
    {'IncidentID': 'IM10267'}
    {'IncidentID': 'IM10268'}

Код:

    import json , requests
sm1 = requests.get('http://Rest Url', auth=('XX','YY'))
z = json.loads(sm1.text)

def get_im_list():
    incidentlist_access = z['content']
    for im_data in incidentlist_access:
        Access_imslist = im_data['Incident']
        print(Access_imslist)
        #print(type(Access_imslist))
        #return Access_imslist

data = get_im_list()
#print(data)

Поэтому, когда я не комментирую

return Access_imslist & print(data)

Я получаю только вывод как:

{'IncidentID': 'IM10265'}

не полный словарь.

Ответы [ 2 ]

0 голосов
/ 11 апреля 2020

вам нужно определить список переменных, а затем добавить значения Access_imslist к этой переменной. как это:

data = []
def get_im_list():
incidentlist_access = z['content']
for im_data in incidentlist_access:
    Access_imslist = im_data['Incident']
    data.append(Access_imslist)
print(data)
0 голосов
/ 11 апреля 2020

Каждый раз, когда вы oop просматриваете данные, Access_imslist перезаписывается, поэтому, когда вы (предположительно) return Access_Imlist, возвращаете только последнее значение.

Вам необходимо создать структуру данных вне из для l oop, добавьте каждый бит данных к нему, а затем верните его вместо этого. Что-то вроде:

def get_im_list():
    incident_data = []
    incidentlist_access = z['content']
    for im_data in incidentlist_access:
        incident_data.append(im_data['Incident'])
    return incident_data

надеюсь, что это поможет!

...