我是python中的新手,我有一个包含以下内容的文本文件
ss ss1,ss ss2,ss ss3,ss ss2,ss ss2,ss 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
我当前的输出是
SS,SS1,SS2,SS3,SS2
答案 0 :(得分:2)
如果您不需要列表的顺序,可以试试这个:
>>> f="ss ss1, ss ss2, ss ss3, ss ss2, ss ss2, ss ss3"
>>> list(set( f.split(', ')))
['ss ss2', 'ss ss3', 'ss ss1']
从set
构建list
可能需要很长时间,这是维持订单的另一种方式:
>>> 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']