读取dict之外的JSON字符串

2024-09-27 18:10:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我的python代码中有以下语句,如何访问键“string”的值(Warner Bros):

metadata['plist']['dict']['array'][4]['string']

请参见此处的JSON示例(最底部):

{
   "plist":{
      "@version":"1.0",
      "dict":{
         "key":[
            "cast",
            "directors",
            "producers",
            "screenwriters",
            "studio"
         ],
         "array":[
            {
               "dict":[
                  {
                     "key":"name",
                     "string":"Daniel Radcliffe"
                  },
                  {
                     "key":"name",
                     "string":"Rupert Grint"
                  },
                  {
                     "key":"name",
                     "string":"Emma Watson"
                  },
                  {
                     "key":"name",
                     "string":"Tom Felton"
                  },
                  {
                     "key":"name",
                     "string":"Michael Gambon"
                  },
                  {
                     "key":"name",
                     "string":"Jim Broadbent"
                  },
                  {
                     "key":"name",
                     "string":"Helena Bonham Carter"
                  },
                  {
                     "key":"name",
                     "string":"Robbie Coltrane"
                  },
                  {
                     "key":"name",
                     "string":"Maggie Smith"
                  },
                  {
                     "key":"name",
                     "string":"Alan Rickman"
                  },
                  {
                     "key":"name",
                     "string":"Timothy Spall"
                  },
                  {
                     "key":"name",
                     "string":"David Thewlis"
                  },
                  {
                     "key":"name",
                     "string":"Julie Walters"
                  },
                  {
                     "key":"name",
                     "string":"Matthew Lewis"
                  },
                  {
                     "key":"name",
                     "string":"Evanna Lynch"
                  },
                  {
                     "key":"name",
                     "string":"Bonnie Wright"
                  },
                  {
                     "key":"name",
                     "string":"Oliver..."
                  }
               ]
            },
            {
               "dict":{
                  "key":"name",
                  "string":"David Yates"
               }
            },
            {
               "dict":[
                  {
                     "key":"name",
                     "string":"David Heyman"
                  },
                  {
                     "key":"name",
                     "string":"David Barron"
                  },
                  {
                     "key":"name",
                     "string":"Tim Lewis"
                  }
               ]
            },
            {
               "dict":{
                  "key":"name",
                  "string":"Steve Kloves"
               }
            }
         ],
         "string":"Warner Bros."
      }
   }
}

我目前遇到:

IndexError: list index out of range

因此,我似乎试图以某种方式访问错误的字段:(


Tags: key代码namejson示例string语句array
3条回答

经过一番紧张的眼神,我得出结论,如果你想要Warner Bros,你应该使用

print(metadata['plist']['dict']['string'])

您有以下错误:

IndexError: list index out of range

因为metadata['plist']['dict']['array']是一个数组,它有4个项,但如果需要访问最后一个项,它将是键3,因为所有数组的第一个项都以0开头。代码如下所示:

data["plist"]["dict"]["array"][3]

但如果您需要访问此项的键字符串,则需要访问dict,然后访问string

print(data["plist"]["dict"]["array"][3]["dict"]["string"])
# {"dict": {"key": "name", "string": "Steve Kloves"}}

但是只针对这个项目和第二个项目,因为其他项目是一个数组。因此,对于dict是一个数组的情况,您需要如下内容:

print(data["plist"]["dict"]["array"][3]["dict"][1]["string"])

问题就像python错误消息所说的那样。Python找不到索引为4的元素,因为数组只有4个元素,数组索引以0开头。因此,要访问数组中的最后一个元素,必须使用

metadata['plist']['dict']['array'][3]['string']

相关问题 更多 >

    热门问题