2016-01-29 72 views
-4

我有一個函數:如何從Python中的For循環返回值?

def getvalues(): 
     global avalue 
     global bvalue 
     dictt = getresults() 
     for key , value in dictt.iteritems(): 
      avalue = key 
      bvalue = dictt[key] 
      print avalue , bvalue 

這將打印安勤的價值,bvalue 輸出:

C123 1 
C245 2 
C456 2 
C565 3 
C654 1 

但是,外面返回值循環不會遍歷over.Like此:

def getvalues(): 
     global avalue 
     global bvalue 
     dictt = getresults() 
     for key , value in dictt.iteritems(): 
      avalue = key 
      bvalue = dictt[key] 
     return avalue , bvalue 

我需要一個在此函數外部使用的avalue,bvalue。如何做到這一點? 如果我使用回報,我得到的輸出作爲

C654 1 

我需要的上述相同的輸出與所有安勤,bvalue,我可以在其他功能使用

+0

你可以用'list'追加說''avalue = [],bvalue = []'並使用像'avalue.append(鍵),bvalue.append(getvalues [鍵])'返回這些,你可以遍歷它們使用外部函數 –

+0

不知道你想要什麼,但這可能是[帶有yield的生成器](https://wiki.python.org/moin/Generators)的情況(第三個代碼示例)。 – Evert

+2

你的代碼毫無意義;它會調用自己,直到Python耗盡堆棧,並且它似乎將該函數的名稱與字典的名稱混淆。請發佈實際運行的代碼,並按照你所說的做。 – kindall

回答

1
def getvalues(): 
    values = [] 
    dictt = getvalues() 
    for key , value in getvalues.iteritems(): 
     values.append((key, getvalues[key])) 
    return values 
+0

append()只接受一個參數 –

+0

他正在附加一個元組。這是一個論據。注意它是如何變化的.append((key,getvalues [key]))。所以你最終得到一個元組列表。該列表中的每個項目都是具有兩個值的元組。除非在編輯中稍後添加,否則不確定您是否注意到它。 – Amit