假设我有一个单词列表,并且我想查找每个单词出现在该列表中的次数。
一个明显的方法是:
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的方法呢?
在Counter类中collections模块是专为解决这类问题的目的:
Counter
collections
from collections import Counter words = "apple banana apple strawberry banana lemon" Counter(words.split()) # Counter({'apple': 2, 'banana': 2, 'strawberry': 1, 'lemon': 1})