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

如何解释统计二维数组元素频率的一行代码中的Counter与map逻辑?

一行Python代码统计二维数组元素频率的执行逻辑解析

先看要解析的目标代码:

count = defaultdict(int, sum(map(Counter, board), Counter()))

其中board是List[List[str]]类型的二维数组,下面拆解每一部分的执行逻辑:

  • map(Counter, board):
    遍历board里的每一个子数组,把Counter函数逐个作用在子数组上。每个子数组会被转换成一个Counter对象,这个对象会统计该子数组内各元素的出现次数。比如子数组["A", "B", "A"]会被转为Counter({"A": 2, "B": 1})。

  • sum(map(...), Counter()):
    sum函数在这里用来累加所有由map生成的Counter对象。必须指定第二个参数Counter()(空计数器)作为累加初始值——因为Counter类支持加法操作,两个Counter相加时,相同元素的计数会被求和,不同元素则保留各自的计数。如果不指定初始值,sum默认用0作为初始值,和Counter相加会触发类型错误。

  • defaultdict(int, ...):
    把前面累加得到的总Counter对象传入defaultdict(int)的构造函数,将Counter的键值对全部导入到defaultdict中。最终得到的count是默认值为0的字典,既包含board中所有元素的出现频率,同时访问不存在的元素时会返回0,和你给出的双层循环写法完全等价。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 18:10:27