如何用python实现两个文件重复数据筛选并统计

文件1:MD5码,名字,IP
文件2:MD5码,ID,名字
我想把两个文件的MD5码做对比,看看文件1的MD5码在第二个文件中是否存在,若存在输出到文件3,然后输出统计总数,请问该怎么做?求大神指导,本人一直用excel,但数据量太大(5000万),想用Python·解决,谢谢!!!!我的分全拿出来悬赏了,希望大家能给代码让我自己运行试试看。久一点无所谓。谢谢

本文实例展示了Python统计列表中的重复项出现的次数的方法,是一个很实用的功能,适合Python初学者学习借鉴。具体方法如下:
对一个列表,比如[1,2,2,2,2,3,3,3,4,4,4,4],现在我们需要统计这个列表里的重复项,并且重复了几次也要统计出来。
方法1:
?

1234

mylist = [1,2,2,2,2,3,3,3,4,4,4,4]myset = set(mylist) #myset是另外一个列表,里面的内容是mylist里面的无重复 项for item in myset: print("the %d has found %d" %(item,mylist.count(item)))

方法2:
?

123456

List=[1,2,2,2,2,3,3,3,4,4,4,4]a = {}for i in List: if List.count(i)>1: a[i] = List.count(i)print (a)

利用字典的特性来实现。
方法3:
?

123

>>> from collections import Counter>>> Counter([1,2,2,2,2,3,3,3,4,4,4,4])Counter({1: 5, 2: 3, 3: 2})

这里再增补一个只用列表实现的方法:

?

12345678910

l=[1,4,2,4,2,2,5,2,6,3,3,6,3,6,6,3,3,3,7,8,9,8,7,0,7,1,2,4,7,8,9] count_times = []for i in l : count_times.append(l.count(i)) m = max(count_times)n = l.index(m) print (l[n])

其实现原理就是把列表中的每一个数出现的次数在其对应的位置记录下来,然后用max求出出现次数最多的位置。
只用这段代码的话,有一个缺点,如果有多个结果,最后的现实的结果只是出现在最左边的那一个,不过解决方法也很简单
温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-10-09

5000w建议你还是用数据库~如果你打算长久用的话.

单单是下面的代码, 就要好几秒

for i in range(100000000):
a = 1
else:
print("ok")

最坏的5000w*5000w=2500000000000000

可能需要几个月的时间...

第2个回答  2017-11-12
#!/usr/bin/env python3

file_ip = 'a.txt'
file_id = 'b.txt'
file_result = 'c.txt'

f2 = set()
with open(file_id) as f:
    for line in f.readlines():
        s = line.strip()        
        if s:
            md5 = s.split(',')[0]
            f2.add(md5)


total = 0
with open(file_ip) as f, open(file_result, 'w') as wf:
    for line in f.readlines():
        s = line.strip()
        if s and s.split('\n')[0] in f2:
            total += 1
            wf.write(s)

print('total:', total)

第3个回答  2015-11-17

    我没看到悬赏分

    悬赏分不如RMB有吸引力

本回答被网友采纳
相似回答