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

これらの文字列を文字のセットに変換するにはどうすればよいですか?

4

3 に答える 3

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

これが私がしたことです:

  1. result値を格納できるように、というセットを作成します
  2. 文字列を繰り返し処理し、文字列cごとに、「、」文字が表示されたら、文字列を新しい文字列リストに分割します。
  3. result文字列の分割からの値でセットを更新します
  4. 結果を印刷する

はセットであるためresult、同じアイテムの複数のインスタンスを含めることはできません。したがって、呼び出すとresult.update()、重複するエントリは自動的に無視されます。

結果を目的の出力のように並べ替える場合、セットは順序付けされていないため、次のことを行う必要があります。

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

リストには、ソートメソッドが組み込まれています。したがって、セットからリストを作成してから呼び出すとsort()、リストが所定の位置に並べ替えられます。つまり、リスト自体を変更するだけで、何も返されません。これを行うと、['a', 'b', 'c']あなたがあなたの質問で望んでいたものがあなたに与えられます。

于 2012-12-08T23:08:14.407 に答える
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'])
于 2012-12-08T22:58:00.250 に答える
3
c = ['a,b,c', 'a,b,c', 'a,b']
print (set (''.join (c).replace (',', '') ) )
于 2012-12-08T22:52:18.643 に答える