过滤出比最小阈值少的元素



尝试使用以下代码计数列表中元素的出现

from collections import Counter
A = ['a','a','a','b','c','b','c','b','a']
A = Counter(A)
min_threshold = 3

在上面的A上致电计数器后,形成了类似的计数器对象:

>>> A
Counter({'a': 4, 'b': 3, 'c': 2})

从这里,如何仅使用3的最小阈值?

过滤'a''b'

构建计数器,然后将dict理解作为第二个滤波步骤。

{x: count for x, count in A.items() if count >= min_threshold}
# {'a': 4, 'b': 3}

被Satish BV所覆盖的,您可以通过词典理解在柜台上迭代。您可以使用项目(或iTeritems以提高效率,如果您使用Python 2(来获得一系列(键,值(元组对。然后将其变成计数器。

my_dict = {k: v for k, v in A.iteritems() if v >= min_threshold}
filteredA = Counter(my_dict)

另外,您可以在原始计数器上迭代并删除不必要的值。

for k, v in A.items():
    if v < min_threshold:
        A.pop(k)

这看起来更好:

{ x: count for x, count in A.items() if count >= min_threshold }

您可以从 3以下的字典中删除键:

for key, cnts in list(A.items()):   # list is important here
    if cnts < min_threshold:
        del A[key]

给您:

>>> A
Counter({'a': 4, 'b': 3})

最新更新