社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

python:更新for循环中的父级

justintime • 5 年前 • 253 次点击  

我想正确更新我的家长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

不幸的是,我不知道我是怎么弄出来的 身份证7 身份证9 得到 身份证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社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/43321
 
253 次点击  
文章 [ 1 ]  |  最新文章 5 年前
skaul05
Reply   •   1 楼
skaul05    6 年前

请尝试以下代码:

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}