如何删除列表中字符串中的重复项?

时间:2011-10-10 11:34:31

标签: python

我有字符串列表,但在每个字符串中都是重复的,我需要删除。 f.e。:

lst = ('word1 2 36 2 2' ' word2 96 5 5 5 14' 'word3 45 6 45 45') 

我需要:

lst = ('word1 2 36' 'word2 96 5 14' 'word3 45 6')

2 个答案:

答案 0 :(得分:3)

一般而言:

  1. 为每个键 wordN
  2. 创建dictionary
  3. 在此密钥中,将项目 2 转换为list n set
  4. 遍历字典,从每个密钥及其集合的内容构建新列表

答案 1 :(得分:0)

你的问题不是很清楚,而且你写的“列表”不是列表而是字符串。我想你可能想把它变成一个元组,但即便如此,你需要在这些项目之间使用逗号。

在下面的示例中,我们迭代项目,拆分字符串split()函数,将项目添加到set,再次使用字符串join将它们连接在一起,然后追加它们到我们的输出列表(这次是一个真实的列表):

>>> lst = ('word1 2 36 2 2', ' word2 96 5 5 5 14', 'word3 45 6 45 45')
>>> out = []
>>> for item in lst:
...   tokens = item.split()
...   s = set(tokens)
...   joined = " ".join(s)
...   out.append(joined)
... 
>>> out
['2 word1 36', '96 5 14 word2', '45 word3 6']

这可以通过列表理解更紧凑地编写:

>>> lst = ('word1 2 36 2 2', ' word2 96 5 5 5 14', 'word3 45 6 45 45')
>>> out = [" ".join(set(item.split())) for item in lst]
>>> out
['2 word1 36', '96 5 14 word2', '45 word3 6']