jum*_*947 2 python dictionary python-3.x python-requests
我有一本从 API 调用中得到的字典。我试图从结果中获取特定值。
names = requests.get("http://some.api")
Run Code Online (Sandbox Code Playgroud)
打印时该调用的结果如下所示
{'mynames': [{'id': 38, 'name': 'Betsy'}, {'id': 93, 'name': 'Pitbull'}, {'id': 84, 'name': 'Liberty'}]}
Run Code Online (Sandbox Code Playgroud)
我已经尝试了下面的代码只是为了以“Pitbull”作为其名称来获取结果
filtered_names = {k:v for (k,v) in names.items() if "Pitbull" in v}
Run Code Online (Sandbox Code Playgroud)
我得到一个错误
AttributeError: 'Response' object has no attribute 'items'
Run Code Online (Sandbox Code Playgroud)
我怎样才能从从 API 调用中提取的数据中获取特定值?
requests.get给出一个'Response'对象而不是一个dict. 只有后者有items迭代的方法。
您可以使用该json库来检索常规 Python 字典:
import json
import requests
names = requests.get("http://some.api")
d = json.loads(names.text)
Run Code Online (Sandbox Code Playgroud)
然后请注意,您有一本带有一个键的字典,其中的值是一个字典列表。因此,您需要d['mynames']通过列表理解来访问检索范围内的字典。
filtered_names = [el for el in d['mynames'] if 'Pitbull' in el['name']]
# [{'id': 93, 'name': 'Pitbull'}]
Run Code Online (Sandbox Code Playgroud)