我对Python很新,并且知道我的问题非常简单,但我还没有找到关于SO的现有问题。
我有一个包含字符串元素的数组。现在我想提取元素并计算它们的出现次数,它们按降序排序。
例如:
['ab' 'ab' 'ac']
然后输出应该是:
'ab' 2
'ac' 1
另外,我不知道我不知道什么是存储输出的最佳方式(在地图中,哈希......或类似的东西?再次,我不确定)... < / p>
感谢您的帮助。
答案 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