frozenset至少x个元素

Sha*_*512 3 python frozenset

我目前有这个代码,它检查数组中的所有元素是否相同.如果是这种情况,请返回true

def all_equal(lst):
  """
  >>> all_equal([1,1,1,1,1,1,1])
  True
  >>> all_equal([1,2,3,1])
  False
  """
  return len(frozenset(lst)) == 1
Run Code Online (Sandbox Code Playgroud)

但我想要检查的是,是否至少有5个相同的元素.

以便

[1,1,1,1,1,2,2]
Run Code Online (Sandbox Code Playgroud)

将返回True以及.因为有5次1

Eug*_*ash 8

用途collections.Counter():

from collections import Counter

def all_equal(lst, count):
    return any(v >= count for v in Counter(lst).values())
Run Code Online (Sandbox Code Playgroud)


Mar*_*ers 7

不使用套装,而是使用bagmultiset类型.多重集合计算唯一值出现的次数.

在Python中,这是collections.Counter()对象:

from collections import Counter

def all_equal(lst):
    bag = Counter(lst)
    if any(v >= 5 for v in bag.itervalues()):
        # an element occurred at least 5 times
        # (use bag.values() if using Python 3)
        return True
    return False
Run Code Online (Sandbox Code Playgroud)