有没有更简单的方法按长度过滤Counter的键?
我尝试了以下代码,它可以正确地输出过滤后的Counter,但是它将Counter作为列表进行迭代,然后再将列表转换成Counter。是否有更简单且计算成本较低的方法来实现相同的功能?
from collections import Counter
x = Counter(['a','a', 'ab', 'c', 'hij', 'k'])
threes = Counter([i for i,j in x.items() if len(i) == 3])
twos = Counter([i for i,j in x.items() if len(i) == 2])
Counter
对象的原因吗?看起来你最好使用自定义的类似于Counter
的对象,在插入时进行专门计数,而不是将你需要的东西强行塞进Counter
中的多次解决方案。 - Silas RayCounter
只是像一个dict
一样用于读取。仍然没有看到特别需要使用Counter
的原因。 - Silas RayCounter([x for x in y])
,而是Counter(x for x in y)
),我会期望它稍微快一点。我在Python 2.6上,没有计数器,无法运行此比较。 - Corley Brigman