我有JSON输出如下:
{
"service": [{
"name": ["Production"],
"id": ["256212"]
}, {
"name": ["Non-Production"],
"id": ["256213"]
}]
}
我希望找到所有ID包含"非生产"作为一个名字。
我正在考虑运行循环来检查,如下所示:
data = json.load(urllib2.urlopen(URL))
for key, value in data.iteritems():
if "Non-Production" in key[value]: print key[value]
但是,我似乎无法从"服务"获取名称和ID。树,它返回:
if "Non-Production" in key[value]: print key[value]
TypeError: string indices must be integers
假设:
基本上,我们的目标是获得一份非生产和服务的ID列表。以最佳方式。
答案 0 :(得分:1)
你走了:
data = {
"service": [
{"name": ["Production"],
"id": ["256212"]
},
{"name": ["Non-Production"],
"id": ["256213"]}
]
}
for item in data["service"]:
if "Non-Production" in item["name"]:
print(item["id"])
答案 1 :(得分:0)
无论我看到JSON
,我都会想到功能编程!还有谁 ?!
我认为如果你使用concat或flat,filter和reduce等函数,这是一个更好的主意。
鸡蛋内衬:
[s.get('id', [0])[0] for s in filter(lambda srv : "Non-Production" not in srv.get('name', []), data.get('service', {}))]
编辑:
我更新了代码,即使data = {}
,结果将是[]
空ID列表。