Python:如何在集合中允许重复?

时间:2012-02-26 18:16:20

标签: python set duplicates

我在Python 2.7中遇到了关于set的问题。

以下是相应的示例代码块:

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

正如您所看到的,重点是写一些字母以分配给“字母”供以后使用。但如果我输入“aaabbcdd”,“letters”的输出将返回

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

我的问题是如何编写代码,以便输出允许重复这样的代码:

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

2 个答案:

答案 0 :(得分: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']

答案 1 :(得分:2)

根据定义,集合不允许重复。 使用简单的列表。

在你的情况下:

letters = list(str(raw_input("Type letters: ")))
print sorted(letters)