python - 解析字典中的字典列表以从每个字典中检索特定键的值
问题描述
我得到一个 JSON 响应,并使用json.loads()
. 所以字典看起来像这样:
{u'body': u'[{"id":"1","entity":"zone","status":"PROCESSING","url":null,"createdOn":"2019-10-11T05:49:11Z"},{"id":"2","entity":"floor","status":"FAILED","url":null,"createdOn":"2019-10-11T05:49:15Z"},{"id":"3","entityType":"apartment","status":"SUCCESS","url":null,"createdOn":"2019-10-11T05:49:18Z"}]',u'isBase64Encoded': False, u'statusCode': 200}
我将其命名为testStatusList
. 我想检索"status"
里面每个字典的键值"body"
。我能够"body"
通过给予来检索body = testStatusList['body']
. 现在,字典看起来像:
[
{
"id": "1",
"entityType": "zone",
"status": "PROCESSING",
"url": null,
"createdOn": "2019-03-07T12:47:10Z"
},
{
"id": "2",
"entityType": "floor",
"status": "FAILED",
"url": null,
"createdOn": "2019-08-19T16:46:13Z"
},
{
"id": "3",
"entityType": "apartment",
"status": "SUCCESS",
"url": null,
"createdOn": "2019-08-19T16:46:13Z"
}
]
我尝试了这个解决方案 [ Parsing a dictionary to retrieve a key in Python 3.6
testStatusList= json.loads(status_response['Payload'].read())
body = testStatusList['body']
status =[]
for b in body:
for k,v in b.items():
if k == 'status':
status.append(v)
但我不断得到AttributeError: 'unicode' object has no attribute 'items'
。是否有不同的方法来获取 unicode 对象的项目?
所以我基本上想检索所有状态,即处理中、失败和成功,这样当特定“id”出现故障时,我可以设置一个“if”条件来显示适当的消息。我对我的方法非常不确定,因为我对 Python 完全陌生。任何帮助将不胜感激谢谢!
解决方案
body 仍然是顶部 blob 中的(unicode)字符串。json.loads
在该字符串上再次使用:
body = """[
{
"id": "1",
"entityType": "zone",
"status": "PROCESSING",
"url": null,
"createdOn": "2019-03-07T12:47:10Z"
},
{
"id": "2",
"entityType": "floor",
"status": "FAILED",
"url": null,
"createdOn": "2019-08-19T16:46:13Z"
},
{
"id": "3",
"entityType": "apartment",
"status": "SUCCESS",
"url": null,
"createdOn": "2019-08-19T16:46:13Z"
}
]"""
import json
body = json.loads(body)
status =[]
for b in body:
for k,v in b.items():
if k == 'status':
status.append(v)
print(status)
结果:
['处理','失败','成功']
推荐阅读
- podman - 如何在不写入主目录的情况下运行 podman 和 buildah?
- python - 我可以使用 python 和美丽的汤将用户定义的搜索词作为几种可能的搜索字段类型之一提交吗?
- python - 使用 matplotlib 绘制和保存图像时如何获得更多 fps
- javascript - 如何在不打开新窗口的情况下将变量传递给 php?
- c# - LINQ 在信息组上不同
- python - RPG文字游戏商店修正
- python - 如何使用 ctypes.windll.user32.SetWindowsHookExW 挂钩 ctypes.windll.user32.MessageBoxW?
- nginx - 如果错误,如何更正我的 nginx 配置?
- c# - JSON.NET 用空字符串序列化数组作为默认值
- android - TabBar + BottomBarNavigation 场景中控制器的长度问题