2012-02-26 8 views
5

Python 2.7で問題が発生しました。Python:セットに重複を許可する方法は?

は、ここで適切なサンプルコードのブロックです:あなたが見ることができるように

letters = set(str(raw_input("Type letters: "))) 

、ポイントは、後で使用するために「文字」に割り当てるために、いくつかの手紙を書くことです。

set(['a','a','a','b','b','c','d','d']) 

:私は「aaabbcdd」と入力した場合でも、「手紙」の出力は、私の質問は、出力は、このような重複を許可するように、コードを作成する方法です

set(['a', 'c', 'b', 'd']) 

を返しますか?

+7

セットは今までユニークな要素を含むデータ構造です。重複が必要な場合は、別のデータ構造を使用します(セットではありません)。 –

+0

例えば 'letters = list(raw_input(" Type letters: "))'? –

+0

-1:Python言語だけでなく一般的な数学的定義も無視しているようです。 –

答えて

11

setは重複を保存しないため、setと呼ばれています。通常のstrまたはlistを使用し、必要に応じてソートする必要があります。

>>> sorted(raw_input("Type letters: ")) 
Type letters: foobar 
['a', 'b', 'f', 'o', 'o', 'r'] 

代替(ただし、やり過ぎあなたの例のために)のPython 2.7から利用できる多重集合コンテナcollections.Counter、です。

>>> from collections import Counter 
>>> c = Counter(raw_input("Type letters: ")) 
>>> c 
Counter({'o': 2, 'a': 1, 'r': 1, 'b': 1, 'f': 1}) 
>>> sorted(c.elements()) 
['a', 'b', 'f', 'o', 'o', 'r'] 
+0

はい、setの代わりにlist()を試してみてください() – jisaacstone

+0

ああ。知りませんでした。私はまだこれに新しいです。ありがとうございました! – Alex

2

セットでは重複が許可されません。 単純なリストを使用してください。

お使いの場合には

letters = list(str(raw_input("Type letters: "))) 
print sorted(letters) 
関連する問題