Python 索引器错误:检查json正文时,列表索引超出范围

Python 索引器错误:检查json正文时,列表索引超出范围,python,json,python-3.x,Python,Json,Python 3.x,一般来说,我对编码有点陌生,我试图检查json中的嵌套列表是否在“key2”中包含数据,以便创建一些日志 所以身体是这样的: body={ “键1”:“值1”, “键2”:[“值2”] } #或 正文={ “键1”:“值1”, “键2”:[] } #或 正文={ “键1”:“值1” } 我只需要创建一个日志,如果“key2”:[“value2”],但是“value2”可以是一个随机字符串。到目前为止,代码在1º主体和3º主体上运行正常,但如果“key2”:[]出现错误“Indexer:列表索引

一般来说,我对编码有点陌生,我试图检查json中的嵌套列表是否在“key2”中包含数据,以便创建一些日志

所以身体是这样的:

body={
“键1”:“值1”,
“键2”:[“值2”]
}
#或
正文={
“键1”:“值1”,
“键2”:[]
}
#或
正文={
“键1”:“值1”
}
我只需要创建一个日志,如果“key2”:[“value2”],但是“value2”可以是一个随机字符串。到目前为止,代码在1º主体和3º主体上运行正常,但如果“key2”:[]出现错误“Indexer:列表索引超出范围”,则代码将失败。我还没有找到解决这个问题的方法,有人能帮忙吗

导入json
导入日志记录
正文={…}
如果正文中的“key2”和len(正文[“key2”][0])>0:
日志记录。警告(“数据正常”)
其他:
日志记录。警告(“无值”)
你的意思是
len(body[“key2”])>0

此外,还可以将整个条件简化为

if body.get('key2', []):
如果
key2
不存在,将返回
[]
,空列表的计算结果为
False

更好的是,由于我们现在根本不使用
len
,我们可以简单地使用
None
,这是
.get
返回的默认值:

if body.get('key2'):
你的意思是
len(body[“key2”])>0

此外,还可以将整个条件简化为

if body.get('key2', []):
如果
key2
不存在,将返回
[]
,空列表的计算结果为
False

更好的是,由于我们现在根本不使用
len
,我们可以简单地使用
None
,这是
.get
返回的默认值:

if body.get('key2'):

尝试
如果在body和len中输入“key2”(body.get(“key2”))>0
或如果在len中输入“body.get”(“key2”)>0以避免在
中出现多余的
。尝试
如果在body和len中输入“key2”(body.get(“key2”)>0
或仅仅
如果在len>0
以避免
中的冗余
。来自
.get()
的默认返回值为
,这也是错误的。不需要创建列表。@Barmar当然可以。我想我使用了
[]
是因为我仍然记住了
len
检查…感谢您的帮助,它使我的代码工作正常。
.get()
的默认返回值是
None
,这也是错误的。不需要创建列表。@Barmar当然可以。我想我使用了
[]
,因为我仍然记住了
len
检查……谢谢你的帮助,它让我的代码工作得很好。