这是我的字典格式:
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)