2012-02-26 58 views
5

我遇到了關於在Python 2.7中設置的問題。Python:如何在一個集合中允許重複?

下面是相應的示例代碼塊:

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

正如你所看到的,關鍵是寫一些字母分配給「字母」以備後用。但是,如果我輸入「aaabbcdd」的「字母」輸出返回

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

我的問題是如何編寫代碼,從而使輸出將允許重複這樣的:

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

+7

一組是永遠只包含獨特元素的數據結構。如果你想重複,使用不同的數據結構(不是一組)。 – 2012-02-26 18:18:06

+0

例如'letters = list(raw_input(「Type letters:」))'? – 2012-02-26 18:19:27

+0

-1:這個問題似乎無視常見的數學定義以及Python語言。 – 2012-02-26 18:42:19

回答

11

set不存儲重複,這就是爲什麼它被稱爲set。您應該使用普通的strlist並根據需要對其進行分類。

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

另一種(但矯枉過正你的例子)是多集集裝箱collections.Counter,可從Python 2.7版。

>>> 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 () – jisaacstone 2012-02-26 18:20:25

+0

哦。我不知道。我還是這個新手。謝謝! – Alex 2012-02-26 18:27:17

2

一組不允許重複的定義。 使用一個簡單的列表。

你的情況:

letters = list(str(raw_input("Type letters: "))) 
print sorted(letters) 
相關問題