Python:在for循环中更新父级

问题描述 投票:1回答:1

我想正确更新我的父ID。

我现有的词典列表

id prj_id   parent
1  808348   1
2  808352   2
3  808356   3
4  808361   4
5  808365   0
6  808370   0
7  808370   6
8  808370   7
9  808370   8

现在我想得到它,我的父母得到了父项目的数量

我的代码:

index = 0
last_prj_id = ""

for row in result_gantt:
    current_prj_id = row['prj_id']
    parent = row['parent']
    parent = index

    if current_prj_id == last_prj_id:
        parent = last_id
    else:
        parent = index

    last_prj_id = row['prj_id']
    last_id = row['id']

守则的结果:

id prj_id   parent
1  808348   0
2  808352   0
3  808356   0
4  808361   0
5  808365   0
6  808370   0
7  808370   6
8  808370   7
9  808370   8

不幸的是,我不知道如何得到id为7到id 9的条目获得id 6的父级

这就是问题的样子。

id prj_id   parent
1  808348   0
2  808352   0
3  808356   0
4  808361   0
5  808365   0
6  808370   0
7  808370   6
8  808370   6
9  808370   6

我不知道如何继续。非常感谢你的帮助

python for-loop if-statement parent
1个回答
1
投票

请尝试以下代码:

result_gantt = [{"id":1,"prj_id":808348,"parent":1},{"id":2,"prj_id":808352,"parent":2},{"id":3,"prj_id":808356,"parent":3},{"id":4,"prj_id":808361,"parent":4},{"id":5,"prj_id":808365,"parent":0},{"id":6,"prj_id":808370,"parent":0},{"id":7,"prj_id":808370,"parent":6},{"id":8,"prj_id":808370,"parent":7},{"id":9,"prj_id":808370,"parent":8}]

index = 0
prev_index = 0 # To maintain the index in case of consecutive id's
last_prj_id = ""
check = False # Check for consecutive id's
for row in result_gantt:
    current_prj_id = row['prj_id']
    parent = row['parent']
    parent = index

    if current_prj_id == last_prj_id:
        if not check: # Will be true in case of consecutive id's
            prev_index = last_id
        parent = last_id
        check = True
    else:
        check = False
        parent = index

    last_prj_id = row['prj_id']
    last_id = row['id']
    row['parent'] = parent if not check else prev_index

for i in result_gantt:
    print i

输出:

{'prj_id': 808348, 'id': 1, 'parent': 0}
{'prj_id': 808352, 'id': 2, 'parent': 0}
{'prj_id': 808356, 'id': 3, 'parent': 0}
{'prj_id': 808361, 'id': 4, 'parent': 0}
{'prj_id': 808365, 'id': 5, 'parent': 0}
{'prj_id': 808370, 'id': 6, 'parent': 0}
{'prj_id': 808370, 'id': 7, 'parent': 6}
{'prj_id': 808370, 'id': 8, 'parent': 6}
{'prj_id': 808370, 'id': 9, 'parent': 6}
© www.soinside.com 2019 - 2024. All rights reserved.