Python for循环:在分层数据上循环

2024-09-28 03:25:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用以下结构分析数据:

parent transaction

     child transaction A     
                  child transaction AA                       
                  child transaction AB
                  child transaction AC

     child transaction B
                  child transaction BA
                  child transaction BB
                  child transaction BC

在这种结构中,子事务(例如子事务AA)也可能有子事务,我希望尽可能深入到多个深度级别,理想情况下甚至通过变量定义最大深度(在变量depth_级别下面的代码中) 如何使用for循环执行此操作?我目前的问题是,执行在完成树的一个分支(例如子事务A)后停止

我的代码目前的结构如下:

start_address=callAddress('bc1qn3gwc49e02kkd2t8svpcmg5hlvtaacvl79wae0')
transaction_targets=analyseTransaction(start_address)
for j in transaction_targets:
    result=callAddress(j)
    inner_transaction_targets=analyseTransaction(result)
    compileAddresses(compiled_receiver_addresses,inner_transaction_targets)
    for i in inner_transaction_targets:
        result=callAddress(i)
        inner_out_addr=analyseTransaction(result)
        compileAddresses(compiled_receiver_addresses,inner_out_addr)
        depth_level=depth_level+1
        print(depth_level)
        if depth_level>50:
            print('Maximum depth reached.')
            break

“AnalysetTransaction”函数返回事务列表,即上面概述中的子事务。函数“CompiledAddresses”将所有记录的事务地址收集到一个列表中。 我希望循环向下执行,直到深度为x(由变量“depth_level”标识),然后转到下一个分支(即子事务B)

你知道我做错了什么吗


Tags: 代码childforresult级别结构level事务
1条回答
网友
1楼 · 发布于 2024-09-28 03:25:02

使用像for这样的固定循环控件无法轻松处理此问题。如果您正在从列表中加载(可能是卸载)信息,则可以使用while。不过,最自然的做法是使用递归调用来处理遇到的每一层结构,并使用状态参数来控制深度

比如:

def traverse(target, depth):
    result=callAddress(target)
    inner_transaction_targets=analyseTransaction(result)
    compileAddresses(compiled_receiver_addresses,inner_transaction_targets)
    if depth > 0:
        for inner in inner_transaction_targets:
            traverse(inner, depth-1)
    else:
        pass  # not sure what you want to do at max depth; just leave it?


for j in transaction_targets:
    traverse(j,max_depth)

相关问题 更多 >

    热门问题