python:遍历列表值并获取json中的键
我有以下建议:python:遍历列表值并获取json中的键,python,json,for-loop,Python,Json,For Loop,我有以下建议: { "repo_url":"git@github.plugin.git", "latest_commit":"bfe7bxxxx", "old_commit":"a4ccbyyy", "region": { "A":["us-south","us-east"], "B":["au-syd","germany"] } } 如果我提供us eas
{
"repo_url":"git@github.plugin.git",
"latest_commit":"bfe7bxxxx",
"old_commit":"a4ccbyyy",
"region": {
"A":["us-south","us-east"],
"B":["au-syd","germany"]
}
}
如果我提供us east
或us south
作为输入,我需要获取键值A
。同样,如果我提供au-syd
或germany
作为输入,我需要获得B
。如何循环使用这个json构造
我尝试了以下代码作为起点
output_json = json.load(open(file))
print output_json["region"]
for majorkey, subdict in output_json["region"]:
print subdict
但这是一个错误
for majorkey, subdict in output_json["region"]:
ValueError: too many values to unpack
如评论中所述。这就是你想要的 对于蟒蛇3* 对于python2*
您需要使用
iteritems
,而不仅仅是迭代dict
In [3]: for k, v in output_json['region'].iteritems():
...: if 'us-south' in v:
...: print(v.index('us-south'))
...: print(k)
...:
0
A
我在JavaScript中尝试过这个,我希望它能按照您的期望工作
var jsonObj={
“回购url”:git@github.plugin.git",
“最新提交”:“BFE7Bxxxxx”,
“旧提交”:“a4ccbyyy”,
“区域”:{
“A”:[“美国南部”、“美国东部”],
“B”:[“非悉尼”、“德国”]
}
};
功能输入(val){
for(Object.keys(jsonObj.region)中的变量i){
for(jsonObj.region[Object.keys(jsonObj.region)[i]]中的var j){
if(jsonObj.region[Object.keys(jsonObj.region)[i]][j]==val){
log(Object.keys(jsonObj.region)[i]);
}
}
}
}
输入(“美国东部”)
此output_json[“region”]
不正确。您需要output_json[“region”].items()
或output_json[“region”].iteritems()
分别用于python 3和python 2
for majorkey, subdict in output_json['region'].iteritems():
print(subdict)
In [3]: for k, v in output_json['region'].iteritems():
...: if 'us-south' in v:
...: print(v.index('us-south'))
...: print(k)
...:
0
A