Python 删除逗号分隔的重复单词
我是python新手,我有一个包含以下内容的文本文件 ss1、ss2、ss3、ss2、ss2、ss3 我想删除重复的单词。我的预期输出如下 ss ss1、ss ss2、ss ss3 我正在使用下面的代码Python 删除逗号分隔的重复单词,python,Python,我是python新手,我有一个包含以下内容的文本文件 ss1、ss2、ss3、ss2、ss2、ss3 我想删除重复的单词。我的预期输出如下 ss ss1、ss ss2、ss ss3 我正在使用下面的代码 f = open('a.txt', 'r') file_contents = f.read() words = file_contents.split() SS=",".join(sorted(set(words), key=words.index)) print SS 我当前的输出是 不锈钢
f = open('a.txt', 'r')
file_contents = f.read()
words = file_contents.split()
SS=",".join(sorted(set(words), key=words.index))
print SS
我当前的输出是
不锈钢、不锈钢1、不锈钢2、不锈钢3、不锈钢2
如果不需要列表的顺序,可以尝试以下操作:
>>> f="ss ss1, ss ss2, ss ss3, ss ss2, ss ss2, ss ss3"
>>> list(set( f.split(', ')))
['ss ss2', 'ss ss3', 'ss ss1']
从列表
构建集合
可能需要很多时间,另一种保持顺序的方法是:
>>> f="ss ss1, ss ss2, ss ss3, ss ss2, ss ss2, ss ss3"
>>> result=[]
>>> for i in f.split(', '):
... if i not in result:
... result.append(i)
...
>>> result
['ss ss1', 'ss ss2', 'ss ss3']
顺便说一下,如果列表非常大,使用
set
检查新项目是否已经存在是一种更有效的方法
>>> result=[]
>>> s=set()
>>> for i in f.split(', '):
... if i not in s:
... result.append(i)
... s.add(i)
...
>>> result
['ss ss1', 'ss ss2', 'ss ss3']
这是一个很好的解决方案。此外,如果元素的数量太多,可以添加一个额外的集合,以便检查元素是否存在。这样,如果我没有在结果中就是
o(logn)
在o(n)
@McGrady的例子中,谢谢你的帮助。如果我想保留新行,那么我如何更改您的code@Kevin也许你想要