【发布时间】:2019-12-20 14:40:25
【问题描述】:
我正在尝试从通过 API 调用生成的 JSON 文件中提取任何给定 JSON 对象中的多个 json 键值数据,仅用于在键值对中包含特定值的 JSON 对象;键值对中的这个特定值是通过迭代列表获得的。很难说清楚,所以让我告诉你:
这是一个列表(代表我的真实列表的假列表),其中包含我感兴趣的“键值对中的特定值”:
mylist = ['device1', 'device2', 'device3']
这是我从我的 python 脚本中读取的 json 文件(显然是显着删节的):
[
{
"name": "device12345",
"type": "other",
"os_name": "Microsoft Windows 10 Enterprise",
"os_version": null
},
{
"name": "device2",
"type": "other",
"os_name": "Linux",
"os_version": null
},
{
"name": "device67890",
"type": "virtual",
"os_name": "Microsoft Windows Server 2012 R2 Standard",
"os_version": null
}
]
我想遍历 mylist,并且对于 mylist 中与 json 文件中的 json 键值键“name”匹配的每个项目,打印“name”和“os_name”的值。在这种情况下,我应该看到一个结果,在遍历 mylist 之后,device2 匹配包含 {'name':'device2'} 的 json 对象中的 'name' 键,然后同时打印 'name' 值('device2 ') 和 'os_name' 值 ('Linux'),然后继续遍历 mylist 以获取下一个值以遍历 json 文件。
我的代码不起作用;让我们假设 json 文件已在 python 中正确打开,并被定义为 my_json_file,类型为 List:
for i in mylist:
for key in my_json_file:
if key == i:
deviceName = i.get('name')
deviceOS = i.get('os_name')
print(deviceName)
print(deviceOS)
我认为这里的问题是我无法弄清楚如何“识别”与 mylist 中的项目“匹配”的 json 对象,因为 json 对象是“扁平的”(即我的 json 文件中的 'device2' 'name' 和 'os_name' 嵌套在它下面,这将允许我 dict.get('device2') 然后检索嵌套数据)。
【问题讨论】:
标签: json python-3.x loops iterable