Python:统计字典中元素出现次数并生成新字典的实现疑问
统计字典中单词出现次数的实现方法
嘿,我来帮你搞定这个统计单词次数的问题!你已经成功把原字典里的所有单词扁平化到列表C里了,接下来生成目标字典其实有好几种简洁的方式,我给你逐一说明:
方法一:用Python标准库的collections.Counter(最推荐)
这是最省心的方式,Counter就是专门用来统计可迭代对象中元素出现次数的工具,直接一步到位:
首先导入模块,然后传入你的列表C就行,最后可以直接转成字典(其实Counter本身就是字典的子类,大部分场景下直接用也没问题):
from collections import Counter # 你的扁平化列表C C = ['Yellow', 'Blue', 'Red', 'White', 'Purple', 'Purple', 'Red'] # 统计次数并生成目标字典 word_count = dict(Counter(C)) print(word_count)
运行结果就是你想要的目标字典:
{'Yellow': 1, 'Blue': 1, 'Red': 2, 'White': 1, 'Purple': 2}
方法二:手动循环统计(适合理解原理)
如果你想自己实现统计逻辑,也很简单,初始化一个空字典,遍历列表里的每个单词,根据是否存在来更新计数:
C = ['Yellow', 'Blue', 'Red', 'White', 'Purple', 'Purple', 'Red'] word_count = {} for word in C: if word in word_count: word_count[word] += 1 else: word_count[word] = 1 print(word_count)
运行结果和上面完全一样,这种方式能让你清楚看到计数的过程。
额外优化:简化扁平化步骤
其实你之前把原字典的值存到B再转成C的步骤可以简化,不用单独创建B列表,直接用列表推导式一步生成扁平化列表:
A = {'#1': ['Yellow', 'Blue', 'Red'], '#2': ['White', 'Purple', 'Purple', 'Red']} C = [item for sublist in A.values() for item in sublist]
这样代码更简洁,效率也更高~
内容的提问来源于stack exchange,提问作者Bret
相关产品推荐
相关产品推荐

