python – 在JSON中到达未知值后面的字符串

我使用维基百科的API来获取有关页面的信息.

API给了我这样的
JSON

"query":{
  "pages":{
     "188791":{
        "pageid":188791,
        "ns":0,
        "title":"Vanit\u00e9",
        "langlinks":[
           {
              "lang":"bg",
              "*":"Vanitas"
           },
           {
              "lang":"ca",
              "*":"Vanitas"
           },
           ETC.
        }
     }
  }
}

你可以看到the full JSON response.

我想获得所有条目,如:

{
   "lang":"ca",
   "*":"Vanitas"
}

但是页面对象中的数字键(“188791”)是问题所在.

我发现Find a value within nested json dictionary in python解释了我如何枚举值.

不幸的是我得到以下异常:

TypeError: 'dict_values' object does not support indexing

我的代码是:

json["query"]["pages"].values()[0]["langlinks"]

这可能是一个愚蠢的问题,但我找不到传递页面id值的方法.

最佳答案 只要您一次只查询一个页面,
Simeon Visser’s answer就可以正常工作.但是,作为一个好的风格,我建议您构建代码,以便迭代所有返回的结果,即使您知道应该只有一个:

for page in data["query"]["pages"].values():
    title = page["title"]
    langlinks = page["langlinks"]
    # do something with langlinks...

特别是,通过这种方式编写代码,如果您发现自己需要为多个页面运行查询,则可以使用单个MediaWiki API请求高效地执行此操作.

点赞