2012-12-08 75 views
0
c=['a,b,c','a,b,c','a,b'] 
for item in c: 
    a=set(item.replace("'","")) 
    b=list(a) 
print b 

它返回:蟒蛇將字符串轉換成字符集

['a','b',','] 

我要的是:

['a','b','c'] 

如何將這些字符串轉換成字符集?

+0

你爲什麼要更換'''?它不存在於字符串中。 – Keith

+0

另外,每次迭代都會覆蓋您的'b'。你從哪裏得到'c'? – Keith

+1

@約翰史密斯:我認爲你不理解。 '''不在列表中。用''''括起來的對象是一個字符串。 '''只是告訴你,那就是它。我想你想問的問題是「我怎麼樣)將這些字符串轉換成字符集並且b)找到所有這些集合的交集。」 –

回答

2
c = ['a,b,c', 'a,b,c', 'a,b'] 
print (set (''.join (c).replace (',', ''))) 
+0

不適用於長度> 1的結果(例如'a,b,cd') – bluepnume

+0

但OP詢問「如何將這些字符串轉換爲字符集?」,而不是字符串集。但我不知道。 – Hyperboreus

+0

當然。我可能會這樣做,以節省字符串替換操作:'set(','。join(c).split(','))' – bluepnume

4
>>> c=['a,b,c','a,b,c','a,b'] 
>>> print set(unique for charlist in c for unique in charlist.split(',')) 
set(['a', 'c', 'b']) 
4
c = ['a,b,c','a,b,c','a,b'] 
result = set() 
for item in c: 
    result.update(item.split(',')) 
print result 

這裏就是我所做的:

  1. 創建一組名爲result這樣我們就可以在c和每個
  2. 迭代通過字符串存儲在它的值字符串,當我們看到一個','字符時,我們將它分成一個新的字符串列表。
  3. 更新result鑲有值從分割字符串
  4. 打印結果

因爲result是一組,它不能包含同一項目的多個實例。所以當我們撥打result.update()時,任何重複的條目都會被自動忽略。

如果要排序像你期望的輸出結果,你必須做到以下幾點,因爲集合是無序的:

result = list(result) 
result.sort() 
print result 

列表有一個內置的排序方法。因此,從該集合創建一個列表,然後調用sort()將對列表進行排序,這意味着它不會返回任何內容,但會修改列表本身。這樣做會給你['a', 'b', 'c']這就是你想要的問題。