You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用字典推导式实现列表元素出现次数统计?

用字典推导式实现列表元素计数

当然可以用字典推导式来简化你的元素计数实现!不过咱们得先聊聊不同写法的优缺点,方便你根据场景选择:

基础字典推导式写法

如果你追求代码最简洁,可以用下面的写法:

def count_occurrences(a_list):
    return {item: a_list.count(item) for item in set(a_list)}

原理说明

  • 先用set(a_list)提取列表中所有唯一元素,避免重复计算同一个元素的出现次数
  • 对每个唯一元素,调用列表的count()方法获取它在原列表中的出现次数,作为字典的值

注意点

这个写法虽然简洁,但效率不算最高:因为count()方法每次都会遍历整个列表统计次数,如果你的列表非常大(比如上万条数据),整体时间复杂度会达到O(n²),比你原来的循环写法(O(n))慢不少。

更高效的替代方案(兼顾简洁与性能)

如果想保持和原循环一样的O(n)效率,其实Python标准库的collections.Counter就是专门为这个场景设计的——它本质上就是优化后的计数工具,代码比字典推导式还要简洁:

from collections import Counter

def count_occurrences(a_list):
    return dict(Counter(a_list))

调用这个函数,输入["a", "b", "c", "a", "a", "b"],会直接返回{"a": 3, "b": 2, "c": 1},完全符合你的需求,而且性能拉满。

对比你的原实现

你的原循环写法是非常经典的手动计数逻辑,效率很高;如果想用字典推导式简化,上面第一种写法适合小列表场景,而Counter则是无论列表大小都推荐的最优解。

内容的提问来源于stack exchange,提问作者Andrew DeNike

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 04:16:01