问题示例:
输出时发现列表里的字典全部变成了最后一个字典的键值对。
下面展示一些 。
// An highlighted block
data1 = []
all_data = {}
for td in trs:
name = td.xpath('./td[2]/text()')[0]
xq = td.xpath('./td[3]/text()')[0]
subject = td.xpath('./td[4]/text()')[0]
type = td.xpath('./td[5]/text()')[0]
xuefen = td.xpath('./td[6]/text()')[0]
score = td.xpath('./td[7]/text()')[0]
time = td.xpath('./td[9]/text()')[0]
all_data.update({'学期': xq, '科目': subject, '类别': type, '学分': xuefen, '分数': score, '成绩登记时间': time})
data1.append(all_data)
print(data1)
分析原因:由于字典的引用不变, 将数据存入后,会覆盖原来的字典内容
解决方法:
将字典的初始化放到循环内部
data1 = []
for td in trs:
all_data = {}
name = td.xpath('./td[2]/text()')[0]
xq = td.xpath('./td[3]/text()')[0]
subject = td.xpath('./td[4]/text()')[0]
type = td.xpath('./td[5]/text()')[0]
xuefen = td.xpath('./td[6]/text()')[0]
score = td.xpath('./td[7]/text()')[0]
time = td.xpath('./td[9]/text()')[0]
all_data.update({'学期': xq, '科目': subject, '类别': type, '学分': xuefen, '分数': score, '成绩登记时间': time})
data1.append(all_data)
print(data1)