1

我对 Python 很陌生,并且知道我的问题很简单,但我还没有找到关于 SO 的现有问题。

我有一个包含字符串元素的数组。现在我想提取元素并计算它们的出现次数,它们按降序排序。

例如:

['ab' 'ab' 'ac']

那么输出应该是:

'ab' 2
'ac' 1

此外,我不知道存储输出的最佳方式是什么(在地图、哈希......或类似的东西中?同样,我不确定)......

谢谢你的帮助。

4

3 回答 3

3

这可以使用模块中的Counter类来完成collections

from collections import Counter
x = ['ab', 'ab', 'ac']
counts = Counter(x)

counts存储每个元素的计数信息;完整的方法列表可以在文档中找到,但您可能关心的只是您可以通过counts像哈希一样处理来直接访问计数:

counts['ab']
>>> 2
于 2012-07-05T19:31:09.800 回答
1

有一些名为 NLTK 的库。链接 - http://nltk.org/

编辑:我发现了更好的东西:

你也可以看这里 - NLTK 中的真实字数

来自上述链接的代码示例:

    from collections import Counter
    >>> text = ['this', 'is', 'a', 'sentence', '.']
    >>> counts = Counter(filtered)
    >>> counts
    Counter({'this': 1, 'a': 1, 'is': 1, 'sentence': 1})
于 2012-07-05T19:28:01.883 回答
1

这是一个经典问题,即所谓的“字数”问题。您可能想要使用字典,python 内置的摊销线性查找类型。

像这样声明:

dict = {}

然后,您可以使用类似于以下内容的循环体遍历您的标记列表:

if token not in dict:
    dict[token] = 1
else
    dict[token] += 1

完成后,您将得到一个字典,其中包含作为键的单词和作为值的频率。

以下文档是相关的: http: //docs.python.org/release/2.5.2/lib/typesmapping.html

于 2012-07-05T19:32:47.483 回答