2011-10-10 104 views
-8

我有字符串列表,但在每個字符串是重複的,我需要刪除。 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') 
+1

這些看上去並不像Python的'list's,但無論如何,與算法的一部分,你被卡住?向我們展示你迄今爲止所嘗試的,我們將盡力提供幫助。 – Johnsyweb

回答

3

一般:

  1. 每個鍵wordN
  2. 在創建dictionary此鍵,轉換項目通過listñset
  3. 迭代翻翻字典,然後從每個鍵的新列表及其設置的內容
+0

聽起來有點像這個OP的早期問題之一[這個答案](http://stackoverflow.com/questions/7706621/how-to-insert-duplicated-values-in-dictionary/7706691#7706691)。 – Johnsyweb

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'] 
+0

是的抱歉,我忘記了逗號,但要更具體我需要維護秩序,它必須是第一個單詞1和數字後的順序與之前相同,因爲單詞不會重複,只有數字,所以我需要留言左側,並從數字中刪除重複 – user986761

+0

然後做Alex上面寫的。 – beerbajay

+0

另外,你應該解釋爲什麼你想在你的帖子中做點什麼。由於你的問題很瑣碎,並且沒有給出任何上下文,因此你會得到很多低估。你真的需要回弦嗎?如果是這樣,爲什麼?你爲什麼需要維持秩序?到目前爲止,有什麼必須嘗試?如果你解釋更大的圖片,你可能會得到更有用的答案(即答案,教你一些東西,而不是回答你的狹隘和可能「錯誤」的問題)。 – beerbajay