如何用Python统计多个列表中各元素的跨列表出现次数
实现方案
核心思路
- 由于只需要统计元素在多少个列表中出现,同一个列表内的重复元素不需要重复计数,因此先将每个列表转换为集合做去重处理
- 遍历所有集合的元素,用计数器累加每个元素的出现次数,最终得到的次数就是元素存在的列表数量
代码实现
方法1:使用collections.Counter(最简洁)
from collections import Counter l1 = [1,22,63,4,5,66,7] l2 = [1,22,3,5,6,4] l3 = [1,2,3,5,66,4,70] # 把所有待统计的列表放到一个容器里 all_lists = [l1, l2, l3] # 生成计数结果 element_count = Counter(elem for lst in all_lists for elem in set(lst)) # 转为字典查看结果,也可以直接遍历element_count使用 print(dict(element_count))
输出结果:
{1: 3, 22: 2, 63: 1, 4: 3, 5: 3, 66: 2, 7: 1, 3: 2, 6: 1, 2: 1, 70: 1}
方法2:用原生字典实现(无需导入额外库)
l1 = [1,22,63,4,5,66,7] l2 = [1,22,3,5,6,4] l3 = [1,2,3,5,66,4,70] all_lists = [l1, l2, l3] element_count = {} for lst in all_lists: # 每个列表先去重,避免同一列表内重复元素多次计数 unique_elems = set(lst) for elem in unique_elems: element_count[elem] = element_count.get(elem, 0) + 1 print(element_count)
输出结果和方法1完全一致。
内容的提问来源于stack exchange,提问作者Mahipal Singh
相关产品推荐
相关产品推荐

