如何确保列表包含唯一元素?

时间:2011-01-20 04:21:25

标签: python list

我有一个包含字符串列表的类。说:

ClassName:
 - list_of_strings

我需要强制执行此字符串列表包含唯一元素。不幸的是,我无法将此list_of_strings更改为其他类型,例如set。

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

以下是我需要更新的方法:

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

谢谢!

5 个答案:

答案 0 :(得分:22)

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

答案 1 :(得分:4)

使用in检查列表中是否存在字符串,或者并行使用set来检查和添加。

答案 2 :(得分:1)

您确实可以执行您所描述的list-to-set-to-list操作,但您也可以使用in运算符检查该元素是否已经在列表中,然后再添加它。

答案 3 :(得分:0)

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

答案 4 :(得分:0)

也许我们可以这样做:

def addToList(self,str_to_add):

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

好吧,我不知道它是否与if / else的机制相同。