cam*_*mil 35 python collections dictionary set
是否有标准方法来表示可以包含重复元素的"集合".
据我所知,一个集合只有一个或零个元素.我希望功能有任何数字.
我目前正在使用一个字典,其中元素作为键,数量作为值,但由于许多原因,这似乎是错误的.
动机: 我相信这样的系列有很多应用.例如,对喜欢的颜色的调查可以表示为:survey = ['blue','red','blue','green']
在这里,我不关心订单,但我关心数量.我想做的事情如下:
survey.add('blue')
# would give survey == ['blue', 'red', 'blue', 'green', 'blue']
Run Code Online (Sandbox Code Playgroud)
......甚至可能
survey.remove('blue')
# would give survey == ['blue', 'red', 'green']
Run Code Online (Sandbox Code Playgroud)
注意: 是的,set不是此类集合的正确术语.有更正确的吗?
课程列表可行,但所需的集合是无序的.更不用说为集合命名的方法在我看来更合适.
Ste*_*ski 34
您正在寻找multiset.
Python最接近的数据类型是collections.Counter:
A
Counter是dict用于计算可哈希对象的子类.它是一个无序集合,其中元素存储为字典键,其计数存储为字典值.计数允许为任何整数值,包括零或负计数.该Counter班是类似于其他语言包或者多集.
对于多集的实际实现,请使用bagpypi上的data-structures包中的类.请注意,这仅适用于Python 3.如果您需要Python 2,这里是bag为Python 2.4编写的配方.
eum*_*iro 14
你对带有元素/计数的dict的方法对我来说似乎没问题.您可能需要更多功能.看看collections.Counter.
element in list和更快list.count(element))counter.elements() 看起来像一个包含所有重复项的列表