Как я перечисляю все определенные переменные в отличном сценарии

Попробуйте следующий код:

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}
18
задан danb 19 October 2008 в 14:37
поделиться

2 ответа

Ну, при использовании простого сценария (где Вы не используете ключевое слово "определения"), переменные, которые Вы определяете, будут сохранены в привязке, и можно достигнуть их как это:

foo = "abc"
bar = "def"

if (true) {
    baz = "ghi"
    this.binding.variables.each {k,v -> println "$k = $v"}
}

Печать:

    foo = abc 
    baz = ghi 
    args = {} 
    bar = def

я не знаю о простом способе перечислить через переменные, определенные с ключевым словом "определения", но я буду наблюдать этот вопрос с интересом видеть, знает ли кто-то еще как.

20
ответ дан 30 November 2019 в 08:38
поделиться

На самом деле ответ Ted's будет также работать на 'def'ed переменные.

def foo = "abc"
def bar = "def"

if (true) {
    baz = "ghi"
    this.binding.variables.each {k,v -> println "$k = $v"}
}

урожаи

baz = ghi
__ = [null, null, null]
foo = abc
_ = null
bar = def

я не уверен, что _ - показывают переменные, но я уверен, что можно работать вокруг них.

4
ответ дан 30 November 2019 в 08:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: