Counter in Collections module Python

折月煮酒 提交于 2019-11-26 09:55:06

问题


I\'ve come across a really weird problem. I\'m trying to use Counter function in collections module. However, I keep getting the same error message

AttributeError: \'module\' object has no attribute \'Counter\'

I have tried using it before and it worked fine, but now for some reason when I import \"collections\" module it has a very limited number of attributes.

I have tried:

import collections   # when calling Counter I would then use collections.Counter()
import collections as collect # collect.Counter()

For both of those I keep getting Attribute Error.

I have also tried

from collections import Counter

And in this case I got:

ImportError: cannot import name Counter

These are all tested both in ipython interface and through a script (not importing anything else, just the collections).

Any ideas?


回答1:


The Counter class was added to the module in Python 2.7. You are most likely using Python 2.6 or older. From the collections.Counter() documentation:

New in version 2.7.

On python 2.5 or 2.6, use this backport instead.




回答2:


Came across the same issue while installing pandas.

Cause: Counter is only supported in python2.7 and higher and is not available in earlier versions - Counter class got added into collections package in Python 2.7.


Solution 1: As stated by Martin Pieters - use the backport.

Add counter.py at /lib64/python2.6/ - this is where the collections.py is ./lib64/python2.6/collections.py Patch collections.py with:

from counter import Counter

Solution 2: use the backport_collections package. Next patch (the import statement) the package you're getting exception at i.e. pandas in my case:

from backport_collections import Counter



回答3:


You're probably using an old version of Python, the Counter class, as stated in the documentation was added in version 2.7.



来源:https://stackoverflow.com/questions/13311094/counter-in-collections-module-python

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!