2011-01-20 80 views
7

我有一個包含字符串列表的類。說:如何確保列表包含獨特的元素?

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

回答

21
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

你確實可以做你所描述的名單到組到列表操作,但你也可以使用in操作來檢查元素已經在列表中追加之前。

4

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

0

做到這一點的一種可能的方法是創建一個哈希集並迭代整個列表,將元素添加到集合中;第二次迭代可以用來刪除任何重複。

0

或許我們可以這樣做:

高清addToList(個體經營,str_to_add):

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

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

相關問題