无法导入名称Counter:ImportError

17

我尝试使用Counter(),但每次都出现问题:

from collections import Counter

我收到一个错误,其中显示:

Traceback (most recent call last):
  File "<web session>", line 1, in <module>
ImportError: cannot import name Counter

我真的需要创建一个包含计数器的文件,然后从那里导入它吗?因为我是初学者,所以只需要最基本的答案。

6个回答

39

计数器仅支持 Python 2.7 及更高版本,不支持早期版本。


1
谢谢,你是唯一一个真正回答问题并帮助我的人。 - zurgl
1
@sharafjaffri,你应该接受他的答案,因为那是正确的答案。 - josiah

11

使用

from collections import Counter

请确保 Counter 中的 C 是大写字母。


3
因为这并没有回答问题,所以我得到了负分,但实际上这正是我犯的错误,所以我给它加了一个赞! - Matt
我也给你点赞,因为我也犯了同样的错误,谢谢你指出来。 - JamesT

2
你可以将列表直接转换为set:
l = ['a','b', 'c', 'a', 'd', 'e', 's', 'd', 'e', 'c']
print (len(set(l)) #prints  6

谢谢,现在它可以工作了,除了一个问题。当你有一个字符串列表并且其中一个字符串是空字符串时,你如何将其去掉? - Keely Aranyos
@KeelyAranyos 你的列表.remove('') - Akavall

2
将您的文件重新命名,可能会将文件命名为“集合”或“计数器”。之后,这将起作用。

1

我认为你不想使用collections中的Counter。当你想要做一些类似统计每个单词出现次数的操作时,可以使用Counter。例如:

from collections import Counter
Counter(['dog','cat','dog']) # Should output Counter({'dog': 2, 'cat': 1})

如果要计算列表中不同单词的数量,可以尝试使用以下代码:

len(set(yourList))

如何避免不同大小写的重复:

len(set(word.lower() for word in yourList))

集合只允许包含一个实例,而列表则不同。

如果您使用的是早期版本的Python,可能没有在标准库中包含Counter。如果是这种情况,建议尽可能升级到新版本。


0

在Python3中

import collections
a=collections.Counter(list(i for i in input()))
print(a)

输入 - aaabbbcccc

输出 - Counter({'c':4,'a':3,'b':3)}

如果你想要元素,则使用a.elements(),获取值则使用a.values()


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接