2026/5/13 16:57:34
网站建设
项目流程
万象城网站建设,wordpress 注册 登录,响应式网站,网站开发简直Python 一行代码实现计数统计#xff1a;dict.get() 的巧妙用法
在 Python 中统计元素出现次数是一个常见需求。今天分享一个经典且优雅的写法#xff0c;只需一行代码就能搞定#xff1a;
app_stats[entry.app_id] app_stats.get(entry.app_id, 0) 1场景还原
假设我们在分…Python 一行代码实现计数统计dict.get()的巧妙用法在 Python 中统计元素出现次数是一个常见需求。今天分享一个经典且优雅的写法只需一行代码就能搞定app_stats[entry.app_id]app_stats.get(entry.app_id,0)1场景还原假设我们在分析日志需要统计每个app_id出现的次数fromtypingimportDict# 假设 self.entries 包含多条日志记录app_stats:Dict[int,int]{}# 用于存储统计结果forentryinself.entries:# 统计每个 app_id 出现的次数app_stats[entry.app_id]app_stats.get(entry.app_id,0)1# 输出结果示例{15: 3, 16: 2, 17: 1}# 表示 app_id15 出现3次16出现2次17出现1次拆解这行代码app_stats[entry.app_id]app_stats.get(entry.app_id,0)1│ │ │ │ │ │ │ │ │ └─ 如果不存在从0开始计数 │ │ │ └─ 查找的键app_id │ │ └─ dict.get(key,default)方法 │ └─ 将结果存回字典 └─ 目标字典执行逻辑情况get()返回值计算结果效果app_id第一次出现0默认值0 1 1初始化计数为1app_id已存在当前计数如33 1 4计数加1为什么用get()而不是[]Python 字典有两种访问方式# 方式1用 [] 访问不推荐用于计数app_stats[15]# 如果15不存在直接抛出 KeyError# 方式2用 get() 访问推荐app_stats.get(15,0)# 如果15不存在返回默认值 0不报错dict.get(key, default)的优势键存在时返回对应的值键不存在时返回指定的默认值不会报错完美适合第一次初始化之后累加的场景执行流程图解假设日志中的app_id序列为[15, 15, 15, 16, 16]初始:app_stats{}第1次(15):get(15,0)→ 返回0→011→ app_stats{15:1}第2次(15):get(15,0)→ 返回1→112→ app_stats{15:2}第3次(15):get(15,0)→ 返回2→213→ app_stats{15:3}第4次(16):get(16,0)→ 返回0→011→ app_stats{15:3,16:1}第5次(16):get(16,0)→ 返回1→112→ app_stats{15:3,16:2}最终结果:{15:3,16:2}对比冗长写法 vs 简洁写法传统写法需要 if-elseifentry.app_idinapp_stats:app_stats[entry.app_id]app_stats[entry.app_id]1else:app_stats[entry.app_id]1优雅写法一行搞定app_stats[entry.app_id]app_stats.get(entry.app_id,0)1对比结果✅ 代码更简洁1行 vs 4行✅ 逻辑更清晰无需分支判断✅ 效率更高只查询一次字典实际应用场景这种写法广泛应用于# 1. 词频统计word_count{}forwordintext.split():word_count[word]word_count.get(word,0)1# 2. 投票统计votes{}forvoteinballot:votes[vote]votes.get(vote,0)1# 3. 错误日志统计error_stats{}forerrorinlog_errors:error_stats[error.code]error_stats.get(error.code,0)1进阶用 collections.Counter如果你不需要手动控制过程Python 提供了更高级的工具fromcollectionsimportCounter# 一行代码完成全部统计app_statsCounter(entry.app_idforentryinself.entries)# 结果Counter({15: 3, 16: 2})但在需要自定义统计逻辑或边遍历边处理的场景下dict.get()的写法依然是最灵活、最经典的选择。总结stats[key]stats.get(key,0)1这行代码堪称 Python 计数字典的标准范式利用get()的默认值特性巧妙地解决了初始化累加的问题将原本需要条件判断的逻辑压缩成一行既安全又高效是 Pythonic 代码的典型代表下次需要统计元素频次时试试这行代码吧