用JSON和字符串嵌套的Python字典读取列表

2024-09-27 04:24:39 发布

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

我在python中读取数据时遇到问题。其中一行的示例是:

foo_brackets='{"KEY2":[{"KEY2a":[{"KEY2a1":"4","KEY2a2":"5"},{"KEY2a1":"6","KEY2a2":"7"}],"KEY2b":"8"}],"KEY3":"9"}'

当我用json加载时,KEY2的值会作为一个列表读入,因为括号会阻止我获得想要的结果,即KEY2b的值:

^{pr2}$

我可以试着去掉括号,但实际上有一个值应该是一个列表,KEY2a。如果我去掉所有括号并尝试转换为JSON,您可以看到:

>>> foo_no_brackets='{"KEY2":{"KEY2a":{"KEY2a1":"4","KEY2a2":"5"},{"KEY2a1":"6","KEY2a2":"7"},"KEY2b":"8"},"KEY3":"9"}'
>>> json.loads(foo_no_brackets)
# Traceback omitted since it's just the python error
ValueError: Expecting property name: line 1 column 45 (char 45)

foo_brackets似乎是有效的JSON(我测试了here,去掉了引号),得到了以下结果:

{
   "KEY2":[
      {
         "KEY2a":[
            {
               "KEY2a1":"4",
               "KEY2a2":"5"
            },
            {
               "KEY2a1":"6",
               "KEY2a2":"7"
            }
         ],
         "KEY2b":"8"
      }
   ],
   "KEY3":"9"
}

问题:

有没有办法让我读取foo_brackets这样我就可以调用foo_brackets_json['KEY2']['KEY2b']


Tags: nojson示例列表foo读取数据括号key2
1条回答
网友
1楼 · 发布于 2024-09-27 04:24:39

foo_brackets_json['KEY2']引用一个列表,这里有一个元素。在

必须使用整数索引引用该列表中包含的词典:

foo_brackets_json['KEY2'][0]['KEY2b']

不要试图删除方括号;此处可能有0个或多个嵌套字典。您必须确定在没有一个嵌套字典的情况下应该发生什么。在

上面的硬编码引用假定列表中始终至少有一个这样的字典,并且不关心是否有多个这样的字典。在

您可以使用循环来处理0个或更多个案例:

^{pr2}$

现在,您将逐个处理每个嵌套字典。这将适用于空列表情况,如果有多个。在

您可以将0或多个错误设置为错误:

if len(foo_brackets_json['KEY2']) != 1:
    raise ValueError('Unexpected number of results')

等等,这取决于你的实际情况。在

相关问题 更多 >

    热门问题