如何将统计单词出现次数的Python循环代码转为字典推导式?
用字典推导式实现单词计数
当然可以用字典推导式改写这段代码,但要注意效率差异。
最简单的写法是结合列表的count()方法:
st_dict = {word: words.count(word) for word in set(words)}
这里先用set(words)对单词去重,避免同一个单词重复调用count()——如果直接遍历原始words列表,每个重复出现的单词都会重新统计一遍,效率会大幅下降。
不过要明确:这种字典推导式写法的时间复杂度是O(n²),因为每个count()都会完整遍历一次列表。而你原来的循环写法是O(n),效率更高。如果你的单词列表数据量较大,更推荐用collections模块里的Counter,一行就能高效搞定:
from collections import Counter st_dict = Counter(words)
但如果一定要用字典推导式,上面的写法就能满足你的需求。
内容的提问来源于stack exchange,提问作者Tam
相关产品推荐
相关产品推荐

