Python“设置”有重复/重复的元素
有没有一种标准的方法来表示可以包含重复元素的“集合”。
据我了解,一个集合恰好具有一个元素的零个或零个。我希望功能有任何数量。
我目前使用的字典是元素作为键,数量作为值的字典,但是由于许多原因,这似乎是错误的。
动机: 我相信此类收藏有很多应用。例如,对喜欢的颜色的调查可以表示为:survey = [‘blue’,’red’,’blue’,’green’]
在这里,我不在乎订单,但在乎数量。我想做这样的事情:
survey.add('blue')
# would give survey == ['blue', 'red', 'blue', 'green', 'blue']
…甚至
survey.remove('blue')
# would give survey == ['blue', 'red', 'green']
注意: 是的,集合不是此类集合的正确术语。还有更正确的吗?
当然可以使用一个列表,但是所需的集合是无序的。更不用说对我来说,为集合命名的方法似乎更合适。
-
您正在寻找一个多重集。
Python最接近的数据类型是
collections.Counter
:A
Counter
是dict
用于计数可哈希对象的子类。它是一个无序集合,其中元素存储为字典键,其计数存储为字典值。计数可以是任何整数值,包括零或负计数。
该Counter
班是类似于其他语言包或者多集。对于多集的实际实现,请使用
bag
pypi上data-structures包中的类。请注意,这仅适用于Python 3。如果您需要Python
2,这是bag
为Python 2.4编写的食谱。