我很困惑为什么我可以打印数据并打印出唯一的条目,但是当我去追加列表中以前的数据时,当前的数据记录会被覆盖。
data = {}
vegetablePlantList = []
while True:
results = soup.find("table", {"id": "tablestyle"})
#print(results)
for result in soup.find_all('tr')[1:]:
tableRows = result.find_all('td')
#print ("Year: %s, Location: %s, Reactor: %s, Model: %s, GrossMWe: %s" % \
# (tableRows[0].text, tableRows[1].text, tableRows[2].text, tableRows[3].text, tableRows[4].text))
try:
int(tableRows[0].text)
data["Year"] = tableRows[0].text
data["Location"] = tableRows[1].text
data["Type"] = tableRows[2].text
data["Model"] = tableRows[3].text
data["Kilojoules"] = tableRows[4].text
#print(data)
except:
pass
vegetablePlantList.append(data)
答案 0 :(得分:0)
您只需创建一个 data
对象,然后每次迭代更改该单个对象,并将对该单个对象的多个引用添加到 vegetablePlantList
。它们“全部”发生变化,因为它们实际上都是同一个对象。
要修复它,请在循环内创建字典,以便在每次迭代时创建一个新字典,而不是在所有迭代中共享一个字典:
for result in soup.find_all('tr')[1:]:
data = {}