Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中查找重复行_Python_Linux - Fatal编程技术网

在python中查找重复行

在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

我有一个问题,找到副本,只打印这些副本。我打开了一个文本文件,试图找到副本并打印出来

我所拥有的是:

一个名为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: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)线性时间,因此随着列表的增长,测试变得越来越慢。这意味着整个程序最终需要二次时间,随着行数的增长而变得越来越慢。这不是一个好的选择。你至少应该使用集合或字典来代替。下一步,你不需要拆分标识符,所以你只能找到包含重复的。