在csv文件中搜索元组

时间:2015-05-20 16:27:36

标签: python csv tuples

我们有一个csv文件:

1, 3, 4, 6
5, 3, 1, 9
3, 2, 4, 1

例如,我们有一个包含n个项目的元组。例如,如果n=2我们有一个像(1,3)这样的元组。

我们怎样才能找到CSV文件中存在(1,3)的次数?在此示例中,(1,3)存在2次。第1行为(1,3),第2行为(3,1)。如果我们有一个包含n项的元组,我们如何在Python中执行此操作?

1 个答案:

答案 0 :(得分:0)

首先,读取您的CSV文件。我假设它适合内存。 然后使用字典计算元组的出现次数。为方便起见,我使用defaultdict。    在csv.splitlines()中,csv = [[j.trip()表示i.split(',')]中的j

然后有几种方法:

import collections
import operator
a = collections.Counter([tuple(sorted(i)) for i in reduce(operator.add,[zip(line[0:-1],line[1:]) for line in csv])]).most_common()

import collections
b = collections.defaultdict(lambda:0)
for line in csv:
    for pair in zip(line[0:-1],line[1:]):
        b[tuple(sorted(pair))]+=1

我喜欢第一种方法,因为它排序虽然看起来有点神秘。收益率:

[(('1', '3'), 2),
 (('2', '3'), 1),
 (('4', '6'), 1),
 (('3', '5'), 1),
 (('1', '4'), 1),
 (('3', '4'), 1),
 (('1', '9'), 1),
 (('2', '4'), 1)]