Python 集合模块中的计数器

问题描述 投票:0回答:5

我遇到了一个非常奇怪的问题。我正在尝试在集合模块中使用计数器函数。但是,我不断收到相同的错误消息

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

我之前尝试过使用它,效果很好,但现在由于某种原因,当我导入“集合”模块时,它的属性数量非常有限。

我已经尝试过:

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

对于这两个我不断收到属性错误。

我也尝试过

from collections import Counter

在这种情况下我得到:

ImportError: cannot import name Counter

这些都在 ipython 界面和脚本中进行了测试(不导入任何其他内容,仅导入集合)。

有什么想法吗?

collections counter python-import importerror python-2.6
5个回答
28
投票

Counter
类已添加到Python 2.7中的模块中。您很可能使用 Python 2.6 或更早版本。来自
collections.Counter()
文档

2.7版本新增功能。

在 python 2.5 或 2.6 上,请使用 this backport 代替。


2
投票

安装时遇到同样的问题

pandas

原因

Counter
仅在
python2.7
及更高版本中受支持,并且在早期版本中不可用 -
Counter
类已添加到
collections
中的
Python 2.7
包中。


解决方案 1:如 Martin Pieters 所述 - 使用向后移植。

counter.py

 添加 
/lib64/python2.6/
 - 这是 
collections.py
的位置
./lib64/python2.6/collections.py
补丁
collections.py

from counter import Counter

解决方案2:使用

backport_collections
包。 下一个补丁(导入语句)是您遇到异常的包,即我的情况下的 pandas:

from backport_collections import Counter

1
投票

您可能使用的是旧版本的 Python,

Counter
类,如 文档 中所述,是在版本 2.7 中添加的。


1
投票

以防其他人遇到同样的问题 - 检查您是否没有将您正在处理的文件命名为“collections.py”。在某些 IDE(包括 PyCharm)中,如果您尝试将集合模块导入到名为 collections.py 的文件中,它将无法工作。

您的文件将尝试将自身导入自身,因此集合(包括计数器)的内容将不会被导入。

您可以通过将当前文件重命名为 collections.py 以外的任何文件来解决此问题。


1
投票

您应该使用新版本的python AS python 3。然后您可以使用该模块。 然后导入,

import collections
from collections import Counter
© www.soinside.com 2019 - 2024. All rights reserved.