python - python试图访问嵌套的dict元素
问题描述
{"type":"product","**products**":[
{"id":466501,"title":"Nicholas Cole Cellars GraEagle Red Wing","image":"https://spoonacular.com/productImages/466501-312x231.jpg","imageType":"jpg"},
{"id":455061,"title":"Wieninger Wiener Gemischter Satz","image":"https://spoonacular.com/productImages/455061-312x231.jpg","imageType":"jpg"},
{"id":452162,"title":"The Magnificent Wine Company Steak House","image":"https://spoonacular.com/productImages/452162-312x231.jpg","imageType":"jpg"},
{"id":464255,"title":"Chateau Morrisette Black Dog","image":"https://spoonacular.com/productImages/464255-312x231.jpg","imageType":"jpg"},
{"id":434441,"title":"Dr. Konstantin Frank Gewurztraminer","image":"https://spoonacular.com/productImages/434441-312x231.jpg","imageType":"jpg"},
{"id":451567,"title":"Delectus Dirty Old Dog ( Magnum)","image":"https://spoonacular.com/productImages/451567-312x231.jpg","imageType":"jpg"},
{"id":437451,"title":"Bleasdale Frank Potts Red Blend","image":"https://spoonacular.com/productImages/437451-312x231.jpg","imageType":"jpg"},
{"id":451606,"title":"Dr. Konstantin Frank Rkatsiteli","image":"https://spoonacular.com/productImages/451606-312x231.jpg","imageType":"jpg"},
{"id":440486,"title":"Dog House Checker's Cab","image":"https://spoonacular.com/productImages/440486-312x231.jpg","imageType":"jpg"},
{"id":445496,"title":"Dog House Charlie's Chard","image":"https://spoonacular.com/productImages/445496-312x231.jpg","imageType":"jpg"}],
"offset":0,"number":10,"totalProducts":7573,"processingTimeMs":380,"expires":1594279471761}
注意:这是 API 数据!
我正在尝试访问产品列表内容,我该怎么做?
这是我的代码
product = input("enter any food name: ")
url = 'https://api.spoonacular.com/food/products/search?query={product}&apiKey=7c467a28410940378d56e53829f5efb6&q='
req = requests.get(url).json()
data_dict = dict(req)
for product in data_dict['products']:
print(product['id'])
解决方案
要仅提取产品数据,请使用专门的方法json_normalize
:
from pandas.io.json import json_normalize
d = {"type":"product","**products**":[{"id":466501,"title":"Nicholas Cole Cellars GraEagle Red Wing","image":"https://spoonacular.com/productImages/466501-312x231.jpg","imageType":"jpg"},{"id":455061,"title":"Wieninger Wiener Gemischter Satz","image":"https://spoonacular.com/productImages/455061-312x231.jpg","imageType":"jpg"},{"id":452162,"title":"The Magnificent Wine Company Steak House","image":"https://spoonacular.com/productImages/452162-312x231.jpg","imageType":"jpg"},{"id":464255,"title":"Chateau Morrisette Black Dog","image":"https://spoonacular.com/productImages/464255-312x231.jpg","imageType":"jpg"},{"id":434441,"title":"Dr. Konstantin Frank Gewurztraminer","image":"https://spoonacular.com/productImages/434441-312x231.jpg","imageType":"jpg"},{"id":451567,"title":"Delectus Dirty Old Dog ( Magnum)","image":"https://spoonacular.com/productImages/451567-312x231.jpg","imageType":"jpg"},{"id":437451,"title":"Bleasdale Frank Potts Red Blend","image":"https://spoonacular.com/productImages/437451-312x231.jpg","imageType":"jpg"},{"id":451606,"title":"Dr. Konstantin Frank Rkatsiteli","image":"https://spoonacular.com/productImages/451606-312x231.jpg","imageType":"jpg"},{"id":440486,"title":"Dog House Checker's Cab","image":"https://spoonacular.com/productImages/440486-312x231.jpg","imageType":"jpg"},{"id":445496,"title":"Dog House Charlie's Chard","image":"https://spoonacular.com/productImages/445496-312x231.jpg","imageType":"jpg"}],"offset":0,"number":10,"totalProducts":7573,"processingTimeMs":380,"expires":1594279471761}
products = json_normalize(d['**products**'])
结果数据帧结构products.dtypes
:
id int64
title object
image object
imageType object
dtype: object
上述解决方案非常快。
推荐阅读
- c# - 一次触发许多 sql 查询
- javascript - 如何在 Angular 中制作组件的副本?
- android - 如何在 linux ubuntu 上安装完整的 SDK
- python - 用相关列的平均值替换数据框中的 NaN 值的函数
- ubuntu - 在 ogl 程序编译期间丢失文件
- ios - 无法在原生 iOS Facebook 应用程序中打开特定的用户个人资料页面
- java - 编写一个函数来接受一个整数,并从输入数字中按升序返回一个由数字组成的数字
- php - 对接受字符串参数以创建 PDO 对象的 PHP 类进行单元测试
- python - 记住用户注册
- terraform - ASG 和 EFS 等其他资源上的 terraform 动态标签