小编典典

Python中的项目频率计数

python

假设我有一个单词列表,并且我想查找每个单词出现在该列表中的次数。

一个明显的方法是:

words = "apple banana apple strawberry banana lemon"
uniques = set(words.split())
freqs = [(item, words.split().count(item)) for item in uniques]
print(freqs)

但是我发现这段代码不是很好,因为该程序在单词列表中运行两次,一次构建集合,第二次计算出现次数。

当然,我可以编写一个函数来遍历列表并进行计数,但是那不是Pythonic。那么,有没有更有效和Pythonic的方法呢?


阅读 162

收藏
2020-12-20

共1个答案

小编典典

Countercollections模块是专为解决这类问题的目的:

from collections import Counter
words = "apple banana apple strawberry banana lemon"
Counter(words.split())
# Counter({'apple': 2, 'banana': 2, 'strawberry': 1, 'lemon': 1})
2020-12-20