在python中查找重复行
我有一个问题,找到副本,只打印这些副本。我打开了一个文本文件,试图找到副本并打印出来 我所拥有的是: 一个名为data1.txt的文件,该文件包含以下行:在python中查找重复行,python,linux,Python,Linux,我有一个问题,找到副本,只打印这些副本。我打开了一个文本文件,试图找到副本并打印出来 我所拥有的是: 一个名为data1.txt的文件,该文件包含以下行: G1/0/1 fc:3f:db:8d:fd:6c G1/0/1 38:63:bb:bb:f8:7d G1/0/2 30:e1:71:7a:27:3b G1/0/3 40:a8:f0:53:6f:31 我怎样才能制作一个脚本,只在第一世界中找到重复的脚本,然后像这样打印输出: G1/0/1 fc:3f:db:8d
G1/0/1 fc:3f:db:8d:fd:6c
G1/0/1 38:63:bb:bb:f8:7d
G1/0/2 30:e1:71:7a:27:3b
G1/0/3 40:a8:f0:53:6f:31
我怎样才能制作一个脚本,只在第一世界中找到重复的脚本,然后像这样打印输出:
G1/0/1 fc:3f:db:8d:fd:6c
G1/0/1 38:63:bb:bb:f8:7d
我不需要看到那些单独的行。使用
集合。defaultdict
Ex:
from collections import defaultdict
res = defaultdict(list)
with open(filename) as infile:
for line in infile: #Iterate each line
val = line.strip().split() #Get first word
res[val[0]].append(line)
for k, v in res.items():
if len(v) > 1:
print(v)
['G1/0/1 fc:3f:db:8d:fd:6c\n', 'G1/0/1 38:63:bb:bb:f8:7d\n']
输出:
from collections import defaultdict
res = defaultdict(list)
with open(filename) as infile:
for line in infile: #Iterate each line
val = line.strip().split() #Get first word
res[val[0]].append(line)
for k, v in res.items():
if len(v) > 1:
print(v)
['G1/0/1 fc:3f:db:8d:fd:6c\n', 'G1/0/1 38:63:bb:bb:f8:7d\n']
文件中最多有多少条记录,有限制吗?没有,还有限制吗。谢谢LalitAre重复总是连续的吗?或者它们是否可以与其他条目一起出现?当您检测到至少两个条目时,应该何时报告它们?当您有两个以上具有相同标识符的行时,输出应该是什么?是否应该报告具有相同标识符的所有行?否,它可以出现在不同的行上。我只需要当它们不止一个时,它们是否连续并不重要。感谢MartijnIt,当你只需要追踪你以前看过的东西时,你就可以记住所有的条目。是的..这是真的:(谢谢Rakesh。这正是我所需要的。再次感谢,他们确实想显示复制的实际行,所以忘了我的评论。在arr中使用
行或非arr中的行进行测试需要O(N)线性时间,因此随着列表的增长,测试变得越来越慢。这意味着整个程序最终需要二次时间,随着行数的增长而变得越来越慢。这不是一个好的选择。你至少应该使用集合或字典来代替。下一步,你不需要拆分标识符,所以你只能找到包含重复的。