2013-04-29 104 views
0
我有困難,通過每個值在deps..currently我能夠循環循環

只有once.i有預期的輸出below..can任何人提供關於如何改變循環得到輸入預期的產出如下?遞歸通過DEPS每個值循環

''' 
EXPECTED OUTPUT:- 
external_dep = { 
    '253036': ['12345','34567'], 
    '12345': [], 
    '34567': ['99999'] 
    '99999': [] 
    } 
''' 
def findexternaldep(num): 
    if num == '253036': 
     output =['12345','34567'] 
    if num == '12345': 
     output = [] 
    if num == '34567': 
     output = ['99999'] 
    if num == '99999': 
     output = [] 
    return output 

master_gerrit = ["253036"] 
external_dep={} 
for num in master_gerrit: 
    deps=findexternaldep(num) 
    #print deps 
    external_dep[num] = deps 
    #loop should be repeated for each value in the list deps 
print external_dep 
+0

它真的是字典或JSON對象嗎? – Makoto 2013-04-29 03:48:08

+0

@Makoto - 一切都是字典,這裏不涉及JSON。 – user2125827 2013-04-29 03:49:37

+0

如果沒有任何if語句匹配,則在最後一行返回output,但在任何非if語句中從不會定義output。 – Hooked 2013-04-29 04:04:20

回答

1

當前沒有遞歸。而不是循環,你需要一個遞歸調用的函數。類似這樣的:

external_dep={} 
def handle_gerrit(num, external_dep): 
    deps=findexternaldep(num) 
    external_dep[num] = deps 
    for num in deps: 
     handle_gerrit(num, external_dep) 

handle_gerrit("253036", external_dep) 
print external_dep 
+0

感謝您inputs..is那裏,我們可以添加到機靈這個腳本meaning..for已經handled..it不應該再處理gerrits的方式,否則腳本將無限循環 – user2125827 2013-04-29 05:38:16

+0

@ user2125827:是的,當然,在處理之前檢查它是否已經在external_deps中。 – 2013-04-29 06:37:49