List.append(), похоже, переписывает значения в списке

#python #list #csv #if-statement

#питон #Список #csv-файл #if-оператор

Вопрос:

Я создаю 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)
 

Ответ №1:

Вы создаете новый список на каждой итерации, что вызывает проблему.

Попробуйте следующее:

 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)