Python Append 替换列表中的所有元素

时间:2021-03-23 01:17:59

标签: python json mongodb

我很困惑为什么我可以打印数据并打印出唯一的条目,但是当我去追加列表中以前的数据时,当前的数据记录会被覆盖。

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)

1 个答案:

答案 0 :(得分:0)

您只需创建一个 data 对象,然后每次迭代更改该单个对象,并将对该单个对象的多个引用添加到 vegetablePlantList。它们“全部”发生变化,因为它们实际上都是同一个对象。

要修复它,请在循环内创建字典,以便在每次迭代时创建一个新字典,而不是在所有迭代中共享一个字典:

for result in soup.find_all('tr')[1:]:
    data = {}