Python根据字典中的条件查找obj值
我从python请求中获得以下json数据:Python根据字典中的条件查找obj值,python,dictionary,conditional,Python,Dictionary,Conditional,我从python请求中获得以下json数据: { "results": [ { "name": "virtual-machine-1", "guest": "Microsoft Windows Server 2016 (64-bit)", "status": "green", "id": "567890-004", }, {
{
"results": [
{
"name": "virtual-machine-1",
"guest": "Microsoft Windows Server 2016 (64-bit)",
"status": "green",
"id": "567890-004",
},
{
"name": "virtual-machine-2",
"guest": "CoreOS Linux (64-bit)",
"status": "green",
"id": "567890-005",
}
]
}
如何根据“name”值获取所有字典的“id”值
我已经看到了在同一个字典中基于键(而不是基于条件)查找值并对多个字典进行迭代的解决方案。感谢您的帮助。您正在键入id:
>>> {result['id']: result['name'] for result in data['results']}
{'567890-004': 'virtual-machine-1', '567890-005': 'virtual-machine-2'}
这种技巧被称为字典理解 将json转换为字典列表。那就用速记来表达吧
results = [
{ "name": "virtual-machine-1",
"guest": "Microsoft Windows Server 2016 (64-bit)",
"status": "green",
"id": "567890-004"},
{"name": "virtual-machine-2",
"guest": "CoreOS Linux (64-bit)",
"status": "green",
"id": "567890-005"}
]
id = [x['id'] for x in results if x['name'] == "virtual-machine-1"]
print id # prints 567890-004
id = [x['id'] for x in results if x['name'] == "virtual-machine-2"]
print id # prints 567890-005
什么意思?您是否试图从结果字典中获取“id”的所有值,其中name==some string?仅当结果包含name键时才会返回id,以获取帮助。得到了我所需要的,并且了解了字典的理解。我很难写出一个格式化的评论,因此需要大量的编辑。很抱歉,在查看您的解决方案时,id返回了“[]”,但没有找到匹配项。
例如,上面没有“virtual-machine-3”,如果我尝试使用
id=[x['id'],如果x['name']==“virtual-machine-3”]打印id#打印[]
我预计会出现错误,因为如果我在某处使用“assert id is not None”验证结果,它会为空值返回“True”。
results = [
{ "name": "virtual-machine-1",
"guest": "Microsoft Windows Server 2016 (64-bit)",
"status": "green",
"id": "567890-004"},
{"name": "virtual-machine-2",
"guest": "CoreOS Linux (64-bit)",
"status": "green",
"id": "567890-005"}
]
id = [x['id'] for x in results if x['name'] == "virtual-machine-1"]
print id # prints 567890-004
id = [x['id'] for x in results if x['name'] == "virtual-machine-2"]
print id # prints 567890-005