我们有一个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中执行此操作?
答案 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)]