【问题标题】:Python: How to allow duplicates in a set?Python:如何允许集合中的重复项?
【发布时间】:2012-03-16 09:05:33
【问题描述】:

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

下面是适当的示例代码块:

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

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

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

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

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

?

【问题讨论】:

  • 集合是一个只包含唯一元素的数据结构。如果您想要重复,请使用不同的数据结构(而不​​是集合)。
  • 例如letters = list(raw_input("Type letters: ")) ?
  • -1:这个问题似乎忽略了常见的数学定义以及 Python 语言。

标签: python set duplicates


【解决方案1】:

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

【讨论】:

  • 哦。我不知道。我还是新手。谢谢!
【解决方案2】:

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

在你的情况下:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-09
    • 1970-01-01
    • 2020-04-05
    • 1970-01-01
    • 2011-07-06
    • 2013-08-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多