JSON对象中的追加列表



这是我的字典格式:

quest_attr = {
"questions": [
{
"Tags": [
{
"tagname": ""
}
],
"Title": "",
"Authors": [
{
"name": ""
}
],
"Answers": [
{
"ans": ""
}
],
"Related_Questions": [
{
"quest": ""
}
]
}
]
}

我想添加"Tags"的列表,这样结果将是:

"questions":[
{
"Tags": [
{"tagname":"#Education"}, {"tagname":"#Social"}
], 
remaining fields...
}

其余字段可以假定为空。我想在"questions"主列表中添加多个问题。

我正在使用这个代码,但结果不是预期的。

ind=0
size=len(tags)
while ind<size:
quest_attr["questions"].append({["Tags"].append({"tagname":tags[ind]})})
ind=ind+1

如果我维护一个变量来循环遍历问题列表,如:

quest_attr["questions"][ind]["Tags"].append({"tagname":tags[ind]

给出索引超出范围的错误。我该怎么办?

看来索引变量ind只打算遍历标签列表。使用这种方式,循环将尝试将下一个标记附加到问题列表中的下一个问题上,而不是将其余标记添加到同一问题上。

如果要将相同的集合添加到多个问题中,则需要分别遍历问题列表,同时将标记的追加语句嵌套在另一个循环中。另一方面,如果您只想针对一个问题,则只需使用索引号,在本例中为[0]

这样做可能会更好,但更多的上下文会有所帮助:

for question in quest_attr["questions"]:
for tag in tags:
question["Tags"].append({"tagname":tag})

请不要像你的代码那样把字典和列表弄得一团糟。这里我推荐一个更简单的部署。

quest_attr = {
'questions': {
"Tags":[],
"Title":"",
"Authors":[],
"Answers":[],
"Related_Questions":[]
}
}   


tags = [ {"tagname":"#Education"},{"tagname":"#Social"} ] 
quest_attr["questions"]['Tags'] += tags

print(quest_attr)