Python 3 получить конкретное значение из словаря JSON - PullRequest
0 голосов
/ 01 сентября 2018

У меня есть словарь, который я получаю от вызова API. Я пытаюсь получить конкретное значение из результатов.

names = requests.get("http://some.api")

Результат этого вызова при печати выглядит следующим образом

{'mynames': [{'id': 38, 'name': 'Betsy'}, {'id': 93, 'name': 'Pitbull'}, {'id': 84, 'name': 'Liberty'}]}

Я попробовал приведенный ниже код просто для того, чтобы получить результат с Pitbull в качестве имени

filtered_names = {k:v for (k,v) in names.items() if "Pitbull" in v}

Я получаю ошибку

AttributeError: 'Response' object has no attribute 'items'

Как я могу просто получить определенное значение из данных, извлекаемых из вызова API?

Ответы [ 2 ]

0 голосов
/ 01 сентября 2018
import json
names = requests.get('https://api')
Json = json.loads(names)

filtered_names = {k:v for k,v in Json.items() if "Pitbull" in v}

Теперь у нас должен возникнуть один вопрос: что делает этот json.py? Для ответа на этот вопрос вы можете обратиться введите описание ссылки здесь

Надеюсь, это не вызовет AttributeError

0 голосов
/ 01 сентября 2018

requests.get дает 'Response' объект, а не dict. Только у последнего есть метод items для итерации.

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

import json
import requests

names = requests.get("http://some.api")
d = json.loads(names.text)

Затем обратите внимание, что у вас есть словарь с одним ключом, значение которого представляет собой список словарей. Таким образом, вам нужно получить доступ к d['mynames'] для получения словарей в объеме через список понимания.

filtered_names = [el for el in d['mynames'] if 'Pitbull' in el['name']]

# [{'id': 93, 'name': 'Pitbull'}]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...