如果值满足条件,则删除计数器对象中的条目



如果计数器对象的值符合某个条件,是否有办法从计数器对象中删除条目?例如:

Counter({'a': 1142,'b':1004,'c':100,'d':5})

我想删除所有小于1000的索引,所以只剩下'a'和'b'。我知道我可以循环遍历每个,然后删除,如果它不符合这个解决方案中所示的条件。我只是在寻找一种更有效的方法。

我想它会对你有用的。

from collections import Counter
counter = Counter({'a': 1142, 'b': 1004, 'c': 100, 'd':5})
Counter({k: c for k, c in counter.items() if c >= 1000})

输出:

Counter({'a':1142 , 'b': 1004})
如你所说,这种方法更有效。

您可以使用一个简单的循环来删除适当的键:

from collections import Counter
c = Counter({'a': 1142,'b':1004,'c':100,'d':5})
for k in list(c):
if c[k] < 1000:
del c[k]
print(c)

输出:

Counter({'a': 1142, 'b': 1004})

如果你想要一个副本:

c2 = Counter({k:v for k,v in c.items() if v>= 1000})

最新更新