我想在每个循环中创建一个临时字典,然后将其放在一个列表中,这样我就可以得到一个dicts列表。这是代码:
dicts=[]
tempdic={}
for i in range(0, len(self.info)):
tempdic.clear()
tempdic['title']=str(self.info[i]['title'])
tempdic['desc']=str(self.info[i]['desc'])
dicts.append(tempdic)
问题是,当我在每个循环中更改tempdic时,dicts
(list)的内容也随之改变,以便最后,我有一个列表,其中包含几个都具有相同的值内容。
答案 0 :(得分:3)
您正在循环中重置相同的dict
对象,并在列表中添加对它的引用。您需要在每次迭代时创建新的dict
对象:
for i in range(0, len(self.info)):
tempdic = dict()
答案 1 :(得分:2)
你需要移动这一行:
tempdic={}
循环内部:
dicts=[]
for i in range(0, len(self.info)):
tempdic={}
tempdic['title']=str(self.info[i]['title'])
tempdic['desc']=str(self.info[i]['desc'])
dicts.append(tempdic)
这样,每次迭代循环都会创建一个新的字典。另请注意,我删除了tempdic.clear()
,因为不再需要它。
实际上,这项工作可以更简单地完成:
dicts=[]
for i in range(0, len(self.info)):
dicts.append({'title':str(self.info[i]['title']), 'desc':str(self.info[i]['desc'])})
如您所见,实际上并不需要制作tempdic
。
答案 2 :(得分:1)
整理:
dicts=[]
for item in self.info:
tempdic={} # must create a new dictionary inside the loop
tempdic['title'] = str(item['title'])
tempdic['desc'] = str(item['desc'])
dicts.append(tempdic)
进一步
dicts=[]
for item in self.info:
tempdic={'title': str(item['title'], 'desc': str(item['desc']}
dicts.append(tempdic)
进一步
dicts = [{'title' : str(x['title']), 'desc' str(x['desc'])} for x in self.info)
答案 3 :(得分:0)
for i in range(0, len(self.info)):
dicts.append({
'title': str(self.info[i]['title']),
'desc': str(self.info[i]['desc'])
})