2016-06-09 92 views
0

當我分別打印每個項目(請參閱下面的註釋)時,它們會正確顯示。但是,當我試圖用字典填充列表時,它就顯示爲空!任何人都可以找出原因嗎?爲什麼我的列表不能正確保存(python)

def getAnnualSnow(allData): 
    annualSnow = [] 
    year = allData[0]['year'] 
    totalSnow = 0 
    for monthData in allData: 
     if year <= 2012: 
      if monthData['year'] == year: 
       totalSnow = totalSnow + monthData['snow'] 
      else: 
       totalAnnSnow = {'year':year, 'totalsnow':round(totalSnow,1)} 
       #print(totalAnnSnow) 
       annualSnow.append(totalAnnSnow) 
       year = year + 1 
       totalSnow = 0 
     else: 
      return annualSnow 
+0

因爲可能是你的其他部分沒有執行 –

+1

你能簡單解釋一下allData中的數據是什麼嗎?從代碼中很難理解它。 – Tim

+0

而您的其他部分是*正在執行 - 兩個調用的數據是否相同? – zEro

回答

0

如果列表爲空,也許不會返回? 我只改變了最後一個。

if year <= 2012: 
     if monthData['year'] == year: 
      totalSnow = totalSnow + monthData['snow'] 
     else: 
      totalAnnSnow = {'year':year, 'totalsnow':round(totalSnow,1)} 
      #print(totalAnnSnow) 
      annualSnow.append(totalAnnSnow) 
      year = year + 1 
      totalSnow = 0 
    if year > 2012 and annualSnow: 
     return annualSnow 
0

好的。所以我認爲是什麼導致你的困惑是函數不返回任何東西(無?)。看看下面修改過的else部分,我只添加了一個return語句。

def getAnnualSnow(allData): 
    annualSnow = [] 
    year = allData[0]['year'] 
    totalSnow = 0 
    for monthData in allData: 
     if year <= 2012: 
      if monthData['year'] == year: 
       totalSnow = totalSnow + monthData['snow'] 
      else: 
       totalAnnSnow = {'year':year, 'totalsnow':round(totalSnow,1)} 
       #print(totalAnnSnow) 
       annualSnow.append(totalAnnSnow) 
       year = year + 1 
       totalSnow = 0 
     else: 
      return annualSnow 

    # return annualSnow here!! 
    return annualSnow 

事情取決於你想做什麼,你可以到處分支。當year >2012時,通過返回annualSnow來短路,但除此之外,您不會從該函數返回任何值。而且因爲你不打印任何東西,你什麼都看不到。

嘗試做:

x = getAnnualSnow(allData) 
print x 
type(x) 

鑑於您的片段,好像你的輸出應該是None(但我沒有數據證明)。

編輯

具有的片段更仔細地看了看,這似乎是一個問題

year = allData[0]['year'] 

你可能想要做什麼是

year = monthData['year'] 

只是做if year <= 2012比較之前。因爲就目前而言,你總是比較2012年的第一個入圍年份,所以你的代碼段是否返回值取決於這一事實。它永遠不會進入'主'else部分,如果它曾經進入'主'if。 (聽起來令人費解,因爲我再讀一遍,希望很清楚)

相關問題