微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

List.append() 似乎正在重写列表中的值

如何解决List.append() 似乎正在重写列表中的值

我正在导入一个 CSV 文件,其中有三个商店(商店 A、B 和 C)。商品有几行,行的单元格中有数值,表示店铺是否出售商品。

我试图遍历每一行,我的目标是找到仅由一家商店出售的商品(商店独有的商品)

如果有一个商店独有的商品,我想将该商品附加到一个列表中(每个商店都有一个)。

我的问题是,当我用我的条件打印所有项目时,它会显示商店独有的所有项目,但是当我将它们附加到我的列表并打印我的列表时,只显示最后一个项目(这这就是为什么我认为它被覆盖了)。

import csv
reader = csv.DictReader(open("storeLists.csv"))
for row in reader:
    STORES = [row]
    "COMPARING ALL THE SHOPS TO GATHER ALL THE UNIQUE ITEMS OF EACH SHOP AND SAVE THE INTO A LIST"

    if row["STORE A"] == "Y" and row["STORE B"] != "Y" and row["STORE C"] != "Y":
             storeAuniqueItems = []
             storeAuniqueItems.append(row["NAME"])


    elif row["STORE A"] != "Y" and row["STORE B"] == "Y" and row["STORE C"] != "Y":
            storeBuniqueItems = []
            storeBuniqueItems.append(row["NAME"])


    elif row["STORE A"] != "Y" and row["STORE B"] != "Y" and row["STORE C"] == "Y":
            storeCuniqueItems = []
            storeCuniqueItems.append(row["NAME"])


    else:
            print("NaN")
print("STORE A:",storeAuniqueItems)
print("STORE B:",storeBuniqueItems)
print("STORE C:",storeCuniqueItems)

解决方法

您在每次迭代中都创建了一个新列表,这导致了问题。

尝试以下操作:

import csv
reader = csv.DictReader(open("storeLists.csv"))
storeAuniqueItems = []
storeBuniqueItems = []
storeCuniqueItems = []
for row in reader:
    STORES = [row]
    "COMPARING ALL THE SHOPS TO GATHER ALL THE UNIQUE ITEMS OF EACH SHOP AND SAVE THE INTO A LIST"

    if row["STORE A"] == "Y" and row["STORE B"] != "Y" and row["STORE C"] != "Y":
             storeAuniqueItems.append(row["NAME"])


    elif row["STORE A"] != "Y" and row["STORE B"] == "Y" and row["STORE C"] != "Y":
            storeBuniqueItems.append(row["NAME"])


    elif row["STORE A"] != "Y" and row["STORE B"] != "Y" and row["STORE C"] == "Y":
            storeCuniqueItems.append(row["NAME"])


    else:
            print("NaN")
print("STORE A:",storeAuniqueItems)
print("STORE B:",storeBuniqueItems)
print("STORE C:",storeCuniqueItems)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。