尝试使用以下代码计算列表中元素的出现次数
from collections import Counter
A = ['a','a','a','b','c','b','c','b','a']
A = Counter(A)
min_threshold = 3
在上面的A
上调用Counter后,会形成一个这样的计数器对象:
>>> A
Counter({'a': 4, 'b': 3, 'c': 2})
从这里开始,如何使用'a'
的最小阈值仅过滤'b'
和3
?
答案 0 :(得分:13)
构建你的计数器,然后使用dict理解作为第二个过滤步骤。
{x : A[x] for x in A if A[x] >= min_threshold}
# {'a': 4, 'b': 3}
答案 1 :(得分:2)
您可以从字典中删除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})
答案 2 :(得分:2)
如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)
答案 3 :(得分:1)
这看起来更好:
{ x: count for x, count in A if A[x] >= min_threshold }