初学者提问:python循环取值

python3
有一张父子关系表

img

用org_id 找到对应的 org_parent_id,找到后把值在返回Org_id去找,如果org_id的type=X则退出循环,否则一直找到最后一级
例如: org_id = 1
最后的展示的结果就是 org_id = 1, org_parent_id = 11
如果 org_id = 3
最后的展示结果就是:org_id = 3, org_parent_id = 14
该如何实现?初学者提问。

【以下回答由 GPT 生成】

解决方案

对于这个问题,可以使用递归函数来实现。

步骤如下:

  1. 定义一个递归函数,传入一个org_id参数。
  2. 查询数据库,根据org_id找到对应的org_parent_id。
  3. 判断org_parent_id的type是否为X,如果是,则返回org_id和org_parent_id;否则,调用递归函数,以org_parent_id作为参数再次调用函数。
  4. 递归函数的终止条件是org_parent_id为None或者type为X。
  5. 最终返回找到的org_id和对应的org_parent_id。

下面是一个Python代码示例:

def find_org(org_id):
    # 查询数据库,根据org_id找到对应的org_parent_id
    org_parent_id = query_database(org_id)

    # 判断org_parent_id的type是否为X
    if org_parent_id is None or get_type(org_parent_id) == 'X':
        # 如果是,则返回org_id和org_parent_id
        return org_id, org_parent_id
    else:
        # 如果不是,则调用递归函数,以org_parent_id作为参数再次调用函数
        return find_org(org_parent_id)


# 调用递归函数
result = find_org(1)
print("org_id: ", result[0])
print("org_parent_id: ", result[1])

请注意,上面的代码示例中的一些函数(如query_database和get_type)是假定已经存在的函数,你需要根据实际情况来实现这些函数。

希望以上解决方案对你有帮助。如果你有任何问题,请随时向我提问。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

递归去找,类似这样

def find_org(org_id):
    org_info = org_data.get(org_id)
    if not org_info:
        return None  # org_id不存在于org_data中,返回None表示未找到

    org_parent_id = org_info['org_parent_id']
    org_type = org_info['type']
    
    if org_type == 'X':
        return (org_id, org_parent_id)  # 如果找到最后一级,返回结果

    return find_org(org_parent_id)  # 递归查找下一级的org_parent_id