2016-04-17 34 views
0

背景:使用一個for循環來比較,如果當前值小於以前

我利用2個字典

。出於我的目的,第一個governor_db是一個字典,包含一個州長的名字作爲關鍵字,值只是一組信息,像它們服務的年份一樣。第二個字典包含年份作爲關鍵字和價值是當年的每個月的失業(關鍵)。

我目前的工作內容:

我工作的函數調用以前的功能,我使用的過程中,他們所服務的年計算每省長的平均失業率。我所擁有的(下文)正在重複州長的名字,並將平均失業率拉入新的職能範圍,以便能夠比較最低的平均失業率和州長與這條信息之間的差距。

到目前爲止,我所擁有的將會反覆通過它,準確地給我最低的失業率,但不會給那個符合最低價值的正確的州長。

我當前的代碼:

def governor_lowest_avg_unemployment(g_db,unemployment_db): 
    all_unemploy={} 
    for governor in g_db.keys(): 
     avg_unemploy= avg_unemployment_for_governor(g_db,unemployment_db, governor) 
     if avg_unemploy==None: 
      all_unemploy[governor]=0 
     else: 
      all_unemploy[state]= avg_unemploy 
    lowest_avg= min(all_unemploy.values()) 
    for key, value in all_unemploy.items(): 
     if value == lowest_avg: 
      lowest_gov= key,value 
    return(lowest_gov) 

我想嘗試做,是因爲我迭代通過字典和它對應的失業率值(存儲在上述詞典all_unemploy),我想能夠存儲先前的值並比較我迭代的新值是否小於前一個值。如果新值小於前一個值,我想用新值替換前一個值,直到它停止迭代字典並給出最低平均值的正確元組組合:(總督,平均失業率)

我開始的想法是做下面的事情。我不知道如何雖然實現它:

for key, value in all_unemploy: 
    if value> previous 
     pass 
    elif value == previous 
     pass 
    elif value = None 
     pass 
    elif value < previous 
     lowest = key, value 
return lowest 

沒有在這種情況下,僅僅意味着先前的功能,沒有足夠的信息,失業數據庫來計算州長的平均失業率。

我怎麼能比較這樣的值,並最終得到一個準確的最低值?我是否正確地實施了這樣的事情?

回答

0

如果我理解正確的是你正在嘗試做的,下面的代碼應該爲你工作:

def governor_lowest_avg_unemployment(g_db,unemployment_db): 
    all_unemploy = {} 
    lowest_avg = 1e99 # some huge number, obviously above max possible 
    lowest_gov = None 
    for governor in g_db.keys(): 
     avg_unemploy = avg_unemployment_for_governor(g_db,unemployment_db, governor) 
     if avg_unemploy==None: 
      all_unemploy[governor]=0 
     else: 
      all_unemploy[governor] = avg_unemploy 
      if avg_unemploy < lowest_avg: 
       lowest_avg = avg_unemploy 
       lowest_gov = governor 
    return lowest_gov 
+0

它的工作真棒。我添加了一個名爲「最低= =(州長,avg_unemploy)」的變量,並且返回到最低值,現在正在工作!唯一不起作用的是值爲None的時候,但我確信我能找出一個。它應該是以None出現的,但當然它在這裏設置的方式會導致它出現:(無,1e99)。我相信我可以找到一種方法來解決這個問題! – Nick

+0

只需添加一個檢查最低平均值的if語句;如果是1e99,則替換爲無。如果你喜歡這個答案,請接受它。 – Cyb3rFly3r

相關問題