如何将单个 csv 行放入一个没有重复的列表中?

How do I put a single csv row into one list with no duplicates?

我有一个 csv 文件,其中有一行需要放入列表中。该行的一个例子是

row A
apple
apple
apple
orange
orange
watermelon

我需要将该行读入一个没有重复名称的列表中,所以它看起来像

['apple','orange','watermelon']

这是我当前针对此问题的代码:

import csv
start = open('fruits.csv', 'r')
reader = csv.reader(start)
next(reader, None)
for row in reader:
    fruits = [row[1]]
    print(fruits)

我当前的代码只是将每一行放入其自己的列表中。

在您提供的代码中,您每次循环遍历 for 循环时都会创建一个包含单个项目的新列表。相反,您想维护一个不断增长的列表

import csv
start = open('data.txt', 'r')
reader = csv.reader(start)
next(reader, None)

fruits = [] #define an empty list
for row in reader:
    fruits.append(row[1]) #add to the list

请注意,在您提供的数据示例中,只有一列,因此如果我们严格使用该示例

,则它应该是 row[0] 而不是 row[1]

要使列表唯一,您可以将其转换为强制唯一的集合:

fruits = set(fruits)

如果您希望将其转换回列表,请尝试以下操作:

fruits = list(fruits)

请注意,此方法不能保证列表的顺序保持不变。

import csv

data = 'fruits.csv'

fruits = []

# read csv, append unique items to list
with open(data, 'r') as f:
    reader = csv.reader(f)
    for row in reader:
        if row[0] not in fruits: 
            fruits.append(row[0])

# output: ['row A', 'apple', 'orange', 'watermelon']
print(fruits_in)