如何确保列表包含独特的元素?

问题描述:

我有一个包含字符串列表的类。说:如何确保列表包含独特的元素?

ClassName: 
- list_of_strings 

我需要强制这个字符串列表包含独特的元素。不幸的是,我无法将此list_of_strings更改为另一种类型,如集合。

addToList(str_to_add)函数中,我想保证字符串的唯一性。我怎样才能最好地做到这一点?添加要添加到列表中的字符串,转换为集合,然后回到列表,然后将其重新分配给对象是否可行?

这是我需要更新方法:

def addToList(self, str_to_add): 
    self.list_of_strings.append(str_to_add) 

谢谢!

+0

*为什么*你不能使用一套?这似乎是适当的数据类型。 – 2011-01-20 04:23:38

+0

列表可以按排序吗?如果是这样,那么你可以使用二进制搜索。否则,你会遇到一些线性顺序算法,所以如果绝对速度不是必需的,那么转换成一个集合可能是最简单的。 – chrisaycock 2011-01-20 04:25:19

+0

大概他想维护秩序,或者已经有了代码,而这些代码需要有序列表而不是集合。有序集合或唯一列表是合理的数据类型。 – bnaul 2011-01-20 04:25:27

def addToList(self, str_to_add): 
    if str_to_add not in self.list_of_strings: 
     self.list_of_strings.append(str_to_add) 

你确实可以做你所描述的名单到组到列表操作,但你也可以使用in操作来检查元素已经在列表中追加之前。

请检查列表中是否存在字符串in,或者使用并行的set,您可以检查并添加。

做到这一点的一种可能的方法是创建一个哈希集并迭代整个列表,将元素添加到集合中;第二次迭代可以用来删除任何重复。

或许我们可以这样做:

高清addToList(个体经营,str_to_add):

try: 
    self.list_of_strings.index(str_to_add) 
except: 
    self.list_of_strings.append(str_to_add) 

好了,我不知道它是否具有相同的机制的if/else呢。