【发布时间】:2014-10-20 09:33:46
【问题描述】:
很抱歉,如果问题看起来与以前的问题相似,但我找不到任何与我的确切问题相关的答案。
我在一个目录中有一组文本文件,我想全部阅读并解析它们。文件的格式是这样的(这意味着文件有一个域的重复 ip 和一个 ip 的重复域以及重复的域 | ip 对):
file 1: domain|ip
yahoo.com|9.9.9.9
mard.man.net|23.34.5.1
bbc.net|86.45.76.5
file 2:
google.com|9.9.9.9
yahoo.com|9.9.9.9
yahoo.com|23.34.5.1
我想要的是一个字典,显示唯一的 ips 及其相关的唯一域数量,如下所示:
9.9.9.9,2
23.34.5.1,2
86.45.76.5,1
这是我为它编写的脚本。
d = defaultdict(set)
for dirpath, dirs, files in os.walk(path):
for filename in fnmatch.filter(files, '*.*'):
with open(os.path.join(dirpath, filename)) as f:
for line in f:
if line.startswith('.'):
domain = line.split('|')[0]
ip = line.split('|')[1].strip('\n')
d[ip].add(domain)
但问题是,由于脚本在多个文本文件上运行,如果一个 ip(密钥)已从一个文本文件写入字典 (d) 一次,然后它再次出现在另一个文本文件中,字典会用这样的新值再次写入:
9.9.9.9,1
23.34.5.1,1
86.45.76.5,1
9.9.9.9,2
23.34.5.1,2
【问题讨论】:
标签: python dictionary unique