(找不到)python countable属性most_common()

asp*_*sia 7 python nltk python-2.7 python-3.x

新手在这里.我正在通过nltk书和另一本Python介绍书.我之前在nltk书中遇到过most_common(),虽然我当时无法工作也找不到解决方案,但是我创建了一个小功能,可以完成特定练习中的技巧并继续使用.现在我再次需要它,但我认为我不能轻易绕过它(练习是关于特定文本中最常见的单词长度),而且我知道我会在后面的例子中再次找到它,我希望能够效仿,因为正如我所说,我是一个新手.

从理论上讲,我应该能够这样做:

fdist = FreqDist(len(w) for w in text1)

fdist.most_common()
[(3, 50223), (1, 47933), (4, 42345), (2, 38513) ...
Run Code Online (Sandbox Code Playgroud)

但是,Python告诉我这个:

AttributeError: 'FreqDist' object has no attribute 'most_common'
Run Code Online (Sandbox Code Playgroud)

我发现most_common()是计数器对象的属性(http://docs.python.org/2/library/collections.html)和(http://docs.python.org/dev/library/collections#collections .Counter).我知道也许我应该导入一些东西(一个模块?),但我尝试导入的东西不起作用(没有定义或不存在的消息)或者不包含它 - 我尝试过

import collections 
Run Code Online (Sandbox Code Playgroud)

没有错误,但是当我输入dir(collections)或dir(builtins)时,没有列出most_common().

我安装了2.7和3.0(大部分时间都是Windows,偶尔使用ubuntu在我的虚拟机中工作).我会继续搜索,但非常感谢您的意见.这感觉很基本,但我正在学习,至少现在不能自己解决.再次,非常感谢.

fal*_*tru 6

nltk.probability.FreqDist不是collections.Counter.

使用items方法以排序顺序获取项目列表(最常见的是第一个).

>>> from nltk.probability import FreqDist
>>> dist = FreqDist([1, 2, 1, 2, 1])
>>> dist.items()
[(1, 3), (2, 2)]
Run Code Online (Sandbox Code Playgroud)

或者只是使用collections.Counter:

>>> from collections import Counter
>>> c = Counter([1, 2, 1, 2, 1])
>>> c.most_common()
[(1, 3), (2, 2)]
Run Code Online (Sandbox Code Playgroud)