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

Python中基于另一字典列表快速更新字典列表匹配项键值的最优方法

优化方案

你原来的嵌套循环时间复杂度为 O(m*n)(m为dictB长度,n为dictA长度),数据量较大时执行效率很低。更高效的实现方式是先将dictB转换为以Cases值为键的哈希查找表,整体时间复杂度可降到 O(m+n),仅需各遍历两个列表一次。

具体实现代码如下:

# 第一步:预处理dictB为查找映射表
update_map = {
    item["Cases"]: {"vertical": item["vertical"], "horizontal": item["horizontal"]}
    for item in dictB
}

# 第二步:遍历dictA直接匹配更新
for item in dictA:
    case_id = item["Cases"]
    if case_id in update_map:
        # 直接用update方法批量更新字段,代码更简洁
        item.update(update_map[case_id])

如果后续需要更新的字段有扩展,也可以用更通用的写法,自动提取除了Cases之外的所有字段做更新(注意如果不需要修改原dictB,要先做拷贝):

# 不修改原dictB的通用写法
update_map = {}
for item in dictB:
    item_copy = item.copy()
    case_id = item_copy.pop("Cases")
    update_map[case_id] = item_copy

for item in dictA:
    if item["Cases"] in update_map:
        item.update(update_map[item["Cases"]])

如果dictB中存在相同Cases值的多条数据,后面的条目会覆盖前面的,逻辑和你原来的嵌套循环实现完全一致,且数据量越大的场景下,这种实现的性能优势越突出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 16:06:03