Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.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 - Fatal编程技术网

Python 删除逗号分隔的重复单词

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 我当前的输出是 不锈钢

我是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
我当前的输出是

不锈钢、不锈钢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也许你想要