使用python的csv文件中列中的唯一元素

2024-10-05 10:03:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个分号分隔的csv文件,其格式如下:

indx1; string1; char1; entry1 
indx2; string1; char2; entry2 
indx3; string2; char2; entry3 
indx4; string1; char1; entry4 
indx5; string3; char2; entry5 

我想以列表的形式获得这个文件第一列和第二列的唯一条目(不使用pandas或numpy)。以下是我想要的清单:

^{pr2}$

顺序无关紧要,我希望手术快点。在

现在,我正在读文件(比如说'数据.csv')使用命令

with open('data.csv') as csv_file:
    csv_reader = csv.reader(csv_file, delimiter=';')

我使用的是python2.7。实现我想要的功能的最快方法是什么?我会很感激你的帮助。在


Tags: 文件csv格式readerfilestring1char1entry1
2条回答

您可以使用sets跟踪所需列中已经看到的值。既然您说顺序无关紧要,您可以在处理完所有行之后将集合转换为列表:

import csv

col1, col2 = set(), set()

with open('data.csv') as csv_file:
    csv_reader = csv.reader(csv_file, delimiter=';', skipinitialspace=True)        
    for row in csv_reader:
        col1.add(row[1])
        col2.add(row[2])

print list(col1), list(col2)  # ['string1', 'string3', 'string2'] ['char2', 'char1']

这应该行得通。你可以用它作为基准。在

myDict1 = {}
myDict2 = {}
with open('data.csv') as csv_file:
    csv_reader = csv.reader(csv_file, delimiter=';')
    for row in csv_reader:
        myDict1[row[1]] = 0
        myDict2[row[2]] = 0

x = myDict1.keys() 
y = myDict2.keys() 

相关问题 更多 >

    热门问题