Python 字典高效合并:自定义处理重复键的完整指南

张开发
2026/4/18 4:24:21 15 分钟阅读

分享文章

Python 字典高效合并:自定义处理重复键的完整指南
本文介绍在 python 中高效合并两个字典并灵活处理重复键的多种方法涵盖运算符合并、字典推导式及可扩展函数实现支持求和、取大值、列表聚合等自定义逻辑兼顾性能与可读性。 本文介绍在 python 中高效合并两个字典并灵活处理重复键的多种方法涵盖运算符合并、字典推导式及可扩展函数实现支持求和、取大值、列表聚合等自定义逻辑兼顾性能与可读性。在 Python 3.9 中| 运算符提供了简洁的字典合并语法如 dict1 | dict2但其默认行为是后字典值覆盖前字典同名键值无法满足对重复键进行自定义处理如相加、取最大值、合并为列表等的需求。Python 3.8 及更早版本则需借助其他方式。下面我们将系统性地介绍几种高效、可复用且符合 Pythonic 风格的解决方案。? 推荐方案可配置的合并函数兼容 Python 3.8以下是一个结构清晰、易于扩展的合并函数使用集合交集定位冲突键并通过可注入的 resolve_func 实现任意合并逻辑def merge_dicts(d1: dict, d2: dict, resolve_funclambda v1, v2: v1) - dict: 合并两个字典对重复键调用 resolve_func(v1, v2) 处理。 默认保留 d1 的值可传入如 lambda a,b: ab 或 max 等函数。 # 初步合并d2 覆盖 d1仅作基础骨架 merged {**d1, **d2} # 兼容 Python 3.5或 d1 | d2Python 3.9 # 找出共有的键并按需重写值 common_keys d1.keys() d2.keys() for k in common_keys: merged[k] resolve_func(d1[k], d2[k]) return merged使用示例dict1 {a: 1, b: 2, c: 5}dict2 {b: 3, c: 4, d: 6}# ? 值相加print(merge_dicts(dict1, dict2, lambda x, y: x y))# 输出: {a: 1, b: 5, c: 9, d: 6}# ? 取较大值print(merge_dicts(dict1, dict2, max))# 输出: {a: 1, b: 3, c: 5, d: 6}# ? 合并为列表保留全部值print(merge_dicts(dict1, dict2, lambda x, y: [x, y]))# 输出: {a: 1, b: [2, 3], c: [5, 4], d: 6}? 优势说明该实现时间复杂度为 O(n m)仅遍历一次公共键语义明确、无冗余计算resolve_func 支持任意 callable高度可定制。立即学习“Python免费学习笔记深入” RedClaw 百度推出的手机端万能AI Agent助手

更多文章