You need to enable JavaScript to run this app. Python字典列表嵌套service_ids字段的服务ID存在性校验实现
优惠活动
大模型
产品
解决方案
定价
更多

Python字典列表嵌套service_ids字段的服务ID存在性校验实现

现有代码的核心问题

  • 存在性判断的匹配范围错误:直接检查目标service_id是否在attached_dict_list的顶层元素中,没有遍历每个列表条目、匹配条目内嵌的service_ids数组
  • 类型不匹配问题:列表内存储的service_ids为UUID类型,如果传入的目标service_id是字符串格式,直接比对会因类型不一致永远返回False
  • 数据结构转换缺失:循环时直接追加ORM查询对象,未转换为目标要求的字典结构

正确实现代码

from uuid import UUID

# 把ORM查询结果转换为匹配结构的字典列表
attached_list = ServiceAttachment.query.all()
attached_dict_list = []
for attach_obj in attached_list:
    attached_dict_list.append({
        "v_id": attach_obj.v_id,
        "s_id": attach_obj.s_id,
        "service_ids": attach_obj.service_ids
    })

# 统一目标service_id的类型,和列表内存储的UUID格式保持一致
target_id = UUID(service_id) if isinstance(service_id, str) else service_id

# 遍历所有条目下的service_ids数组,校验目标值是否存在
is_exist = False
for item in attached_dict_list:
    if target_id in item["service_ids"]:
        is_exist = True
        break

if is_exist:
    print(target_id)

简化校验写法

不需要提前中断遍历的场景下,可使用生成器表达式压缩校验逻辑:

is_exist = any(target_id in item["service_ids"] for item in attached_dict_list)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.31 12:15:07