我有一个像这样的文件:
q12j4
q12j4
fj45j
q12j4
fjmep
fj45j
现在我想做的是:
- 查找是否有重复的条目,
如果是这样,则打印一次条目,并且不会重复打印它们。
输出应该是这样的:q12j4 fj45j fjmep
[省略重复]
我试图用defaultdict
函数来做,但我认为它不适用于字符串。
请帮忙..
我有一个像这样的文件:
q12j4
q12j4
fj45j
q12j4
fjmep
fj45j
现在我想做的是:
如果是这样,则打印一次条目,并且不会重复打印它们。
输出应该是这样的:
q12j4
fj45j
fjmep
[省略重复]
我试图用defaultdict
函数来做,但我认为它不适用于字符串。
请帮忙..
def unique(seq):
seen = set()
for val in seq:
if val not in seen:
seen.add(val)
yield val
with open('file.txt') as f:
print ''.join(unique(f))
如您所见,我选择编写一个单独的生成器来从可迭代对象中删除重复项。这个生成器,unique()
也可以在许多其他情况下使用。
这应该足够了:
with open('file.txt', 'r') as f:
for line in set(f):
print line
seen = set()
with open(filename, 'r') as f:
for line in f:
if line not in seen:
print line
seen.add(line)
您应该使用 itertools.groupby 函数,有关用法示例,请查看标准库或此相关问题:如何使用 Python 的 itertools.groupby()?
假设这toorder
是您的重复条目列表:
import itertools
toorder = ["a", "a", "b", "a", "b", "c"]
for key, group in itertools.groupby(sorted(toorder)):
print key
应该输出:
a
b
c