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