当前位置: 首页 > news >正文

【Python 工具人快餐 · 第 4 份】

开袋即食

collections 自带三件「数据小神器」:
• Counter:一行统计出现次数
• deque:双向队列,O(1) 头尾增删
• defaultdict:键不存在时自动给默认值,省掉 if 检查


1 行代码 3 连发

from collections import Counter, deque, defaultdictc = Counter("abracadabra")           # Counter({'a': 5, 'b': 2, ...})
dq = deque(maxlen=3)                 # 自动丢弃旧元素
d  = defaultdict(int)                # 默认 0

场景实拍:实时滑动窗口 Top-3

需求:日志不断吐 IP,实时保留最近 1000 条并输出出现最多的 3 个 IP。

from collections import Counter, dequewindow = deque(maxlen=1000)
for ip in log_stream():          # 假设是个生成器window.append(ip)top3 = Counter(window).most_common(3)print(top3)

• deque 自动踢掉第 1001 条老记录
• Counter(window) 每次 O(n) 统计,数据量小可忽略
如需极致加速,可加 Counter.update / subtract 增量维护。


升级加料

  1. Counter 支持 + - & |:合并或取交集
  2. deque 支持 rotate(n) 快速旋转
  3. defaultdict 可嵌套:dd = defaultdict(lambda: defaultdict(list))

打包带走
统计用 Counter,队列用 deque,缺值用 defaultdict——
别再用裸 dict 手撸轮子啦!

http://www.dtcms.com/a/324411.html

相关文章:

  • 【LLM】什么是Function Calling以及实现原理
  • Day41--动态规划--121. 买卖股票的最佳时机,122. 买卖股票的最佳时机 II,123. 买卖股票的最佳时机 III
  • 工业相机选择规则
  • 如何将PDF文档进行高效编辑处理!
  • Rust 实战四 | Traui2+Vue3+Rspack 开发桌面应用:通配符掩码计算器
  • Virtio 驱动初始化数据收发流程详解
  • 如何解决线上gc频繁的问题?
  • 《C语言》结构体和联合体练习题--2
  • Excel合并同步工具V1.0
  • 比特币现货和比特币合约的区别与联系
  • 数据结构——哈希表、树、gdb调试、时间复杂度
  • 【走进Docker的世界】Docker环境搭建
  • 自动驾驶控制算法——Stanley 控制器
  • 构建健壮的商品数据采集服务:处理京东 API 限流与错误
  • python洛谷做题27:P5724 【深基4.习5】求极差 / 最大跨度值 / 最大值和最小值的差
  • mcp-go v0.37.0 版本发布:重大变更与新特性解析
  • 利用容器编排完成haproxy和nginx负载均衡架构实施
  • GitLab 零基础入门指南:从安装到项目管理全流程
  • Elasticsearch QueryDSL 教程
  • 应对高并发 - TCP/IP网络栈核心参数调优
  • 【递归、搜索与回溯算法】递归算法
  • 【代码随想录day 16】 力扣 513.找树左下角的值
  • 米哈游笔试——求强势顶点的个数
  • [python] typing 中的overload
  • Android视图回调机制:从post到ViewTreeObserver,从源码分析到最佳实践
  • MariaDB 数据库管理
  • 基于PyTorch一文讲清楚损失函数与激活函数并配上详细的图文讲解
  • Pytorch深度学习框架实战教程12:Pytorch混合精度推理,性能加速147%的技术实现
  • MPLS对LSP连通性的检测
  • 使用Blender可视化多传感器坐标系转换