如何在csv数据列上使用Python set方法



嗨,我本周开始学习python,并试图理解列表上的sets方法。我已经完成了帖子,但仍然被卡住了。我正试图在csv文件的第5列中创建一组唯一的值(如下(。我试图使用set方法创建一个唯一的列表,但在数据文件的行中不断获得唯一的值,而不是csv文件的列5(Name5(中的唯一值。我尝试过append函数,但后来我得到了7行数据,并添加了前一行。我想要的输出只是第5列中唯一值的列表-请提供任何帮助

我得到的输出是红色蓝色蓝色蓝色红色红色绿色

当我想要时

红色蓝色绿色

import csv
with open('Test_colours_in.csv', 'r') as csv_file:
csv_reader = csv.DictReader(csv_file)
# need to print unique values in column 5
my_list = {}
for line in csv_reader:
my_list = line['Name5']
print(set(my_list))
# csv file below
Name1,Name2,Name3,Name4,Name5,Name6,Name7,Name8
1,2,3,4,Red,6,7,8
1,2,3,4,Blue,6,7,8
1,2,3,4,Blue,6,7,8
1,2,3,4,Blue,6,7,8
1,2,3,4,Red,6,7,8
1,2,3,4,Red,6,7,8
1,2,3,4,Green,6,7,8

您的代码无法工作,因为您一直在覆盖my_list变量。相反,您可以尝试使用.add.进行添加

如果你想要"红蓝绿"输出,试试这个:

import csv
with open('Test_colours_in.csv', 'r') as csv_file:
csv_reader = csv.DictReader(csv_file)
# need to print unique values in column 5
my_list = set()
for line in csv_reader:
my_list.add(line['Name5'])
print(my_list)

输出:

{'Red', 'Blue', 'Green'}

如果你想要独特的线路,试试这个:

import csv
with open('Test_colours_in.csv', 'r') as csv_file:
csv_reader = csv.DictReader(csv_file)
# need to print unique values in column 5
my_list = list()
my_colors = set()
for line in csv_reader:
if line['Name5'] not in my_colors:
my_list.append(line)
my_colors.add(line['Name5'])
for i in my_list:
print(i)

输出:

OrderedDict([('Name1', '1'), ('Name2', '2'), ('Name3', '3'), ('Name4', '4'), ('Name5', 'Red'), ('Name6', '6'), ('Name7', '7'), ('Name8', '8')])
OrderedDict([('Name1', '1'), ('Name2', '2'), ('Name3', '3'), ('Name4', '4'), ('Name5', 'Blue'), ('Name6', '6'), ('Name7', '7'), ('Name8', '8')])
OrderedDict([('Name1', '1'), ('Name2', '2'), ('Name3', '3'), ('Name4', '4'), ('Name5', 'Green'), ('Name6', '6'), ('Name7', '7'), ('Name8', '8')])

您可以尝试以下操作:

csv_reader = csv.DictReader(csv_file)
unique_vals = set([row['Name5'] for row in csv_reader])

最新更新