Python:从String数组中提取和计算元素的最短方法?

时间:2012-07-05 19:25:19

标签: python

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

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

例如:

['ab' 'ab' 'ac']

然后输出应该是:

'ab' 2
'ac' 1

另外,我不知道我不知道什么是存储输出的最佳方式(在地图中,哈希......或类似的东西?再次,我不确定)... < / p>

感谢您的帮助。

3 个答案:

答案 0 :(得分:2)

可以使用Counter模块中的collections类来完成此操作。

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

counts存储每个元素的计数信息;完整的方法列表可以在documentation中找到,但您可能只关心通过将counts视为哈希来直接访问计数:

counts['ab']
>>> 2

答案 1 :(得分:1)

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

编辑: 我找到了更好的东西:

您也可以在这里查看 - real word count in NLTK

以上链接中的代码示例:

    from collections import Counter
    >>> text = ['this', 'is', 'a', 'sentence', '.']
    >>> counts = Counter(filtered)
    >>> counts
    Counter({'this': 1, 'a': 1, 'is': 1, 'sentence': 1})

答案 2 :(得分: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