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

Python如何从嵌套循环中返回未在save_file中存在的新增asset_id

现有代码的问题

你当前的嵌套循环逻辑存在两个明显缺陷:

  • 每次仅比对单个存档分组的资产ID,只要ID不在当前遍历的分组里就打印不存在,但只要ID在任意一个存档分组的asset_ids中就属于已存在资产,不需要继续比对
  • 没有设置循环终止标记和结果收集逻辑,导致输出大量重复日志,也无法直接得到最终的新ID列表

优化解决方案

建议先把存档中所有已存在的资产ID统一提取为集合,利用集合O(1)的查找效率简化逻辑、提升性能:

# 1. 提取所有存档中已存在的资产ID,存入集合
existing_ids = set()
for group_content in save_file.values():
    existing_ids.update(group_content["asset_ids"])

# 2. 遍历新数据筛选出未存档的ID
new_ids = []
for group_content in new_data.values():
    for asset_id in group_content["asset_ids"]:
        if asset_id not in existing_ids:
            new_ids.append(asset_id)

print(new_ids) # 输出结果:[100]

原有嵌套逻辑的修改方案

如果你不想调整原有嵌套循环的结构,可以新增标记位判断ID是否已存在,匹配到后直接跳出内层循环减少无效遍历:

new_ids = []
for r in new_data:
    for n in new_data[r]['asset_ids']:
        is_existed = False
        for a in save_file:
            if n in save_file[a]['asset_ids']:
                is_existed = True
                break # 匹配到已存在就跳出当前循环,不需要继续比对其他分组
        if not is_existed:
            new_ids.append(n)

print(new_ids) # 输出结果:[100]

最终得到的new_ids列表就是所有未在存档文件中存在的新资产ID,你可以直接用这个列表执行后续的业务逻辑和存档更新操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 19:36:03