Получить значения из ответа python - PullRequest
0 голосов
/ 05 марта 2020

Я делаю запрос к URL с использованием python запросов и получаю следующий ответ

{
    "content": {
        "root": {
            "details":"http://localhost:8080/****/root",
            "content": {
                "A": {
                "details":"http://localhost:8080/***"
                },
                "B":{
                "details":"http://localhost:8080/***"
                },
                "C":{
                "details":"http://localhost:8080/****"
                }
            }
        }
    }
}

Я хочу получить значения A, B, C в списке. Как я могу это сделать? Любые входные данные будут очень полезны.

Ответы [ 4 ]

1 голос
/ 05 марта 2020

Получите значения и сохраните их в списке:

response = {
        "content":{
            "root":{
                    "details":"http://localhost:8080/****/root",
                    "content":{
                    "A":{
                        "details":"http://localhost:8080/***"
                    },
                    "B":{
                        "details":"http://localhost:8080/***"
                    },
                    "C":{
                        "details":"http://localhost:8080/***"
                    }
                }
            }
        }
    }

contents = response["content"]['root']['content']
contents_list = []

for content in contents.values():
    contents_list.append(content["details"])

print(contents_list)

ВЫХОД:

['http://localhost:8080/***', 'http://localhost:8080/***', 'http://localhost:8080/***']

Но если вы хотите получить и ключ, и значение A, B и C. Попробуйте это:

for content in contents.values():
    for key, value in content.items():
        contents_list.append(f"{key}: {value}")

print(contents_list)

ВЫХОД:

['details: http://localhost:8080/***', 'details: http://localhost:8080/***', 'details: http://localhost:8080/***']
1 голос
/ 05 марта 2020

вы можете просто прочитать их как dict и добавить в список:

#assuming res is the response json
Vals=[]
a = res["root"]["content"]["A"]
Vals.append(a)

Аналогично поступите для B и C

1 голос
/ 05 марта 2020

Python позволяет вложить дикту в другую. Так что все должно быть прямо вперед.

Вы можете перебирать дикт, полученный из ключей 'root' -> 'content'.

values = []
contents = response['root']['content']
for key, value in contents.items():
     print(key, value['details'])
     values.append(value['details']

Метод два: перебор диктовать с помощью ключей только:

values = []
contents = response['root']['content']
for key in contents :
    value = contents[key]
    print(key, value['details'])
    values.append(value['details'])
print(values)
0 голосов
/ 05 марта 2020

Сначала вы должны попробовать себя.

  1. Сначала разберитесь во вложенном словаре. Примечание: ввод неверный, отсутствует ".
  2. Использовать get метод словаря для извлечения ключа.
  3. вы должны знать, что нужно перебирать словарь по for l oop.
  4. Вы должны знать items метод словаря.
  5. Если вы хотите получить значение указанных c ключей, таких как A and/or B and/or C ..., пожалуйста, добавьте if l oop перед добавлением значения в список вывода.

Надеюсь, это поможет вам.

Код :

output_list = []
for item in input_data.get("content", {}).get("root", {}).get("content", {}).items():
    #output_list.append(item[1])  # Value of Key
    output_list.append(item[1]["details"]) # Value of details from Key


print("output_list:", output_list)

Понимание списка

output_list = [item[1]["details"]
    for item in input_data.get("content", {}).get("root", {}).get("content", {}).items()
]
...