2012-12-08 73 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']这就是你想要的问题。