2011-09-18 38 views
2

使用Python 2.7。通過For循環Python中的迭代總計字典值進行減法

我與球隊的名字字典的鍵和值包含在列表中。第一個值是運行該球隊得分的量,第二個是允許運行:

NL = {'Phillies': [662, 476], 'Braves': [610, 550], 'Mets': [656, 687]} 

我有一個功能,在每個關鍵迭代,並且提供總分得和允許的詞典作爲一個整體。我還希望能夠從總數中減去每個球隊,並創建一個聯盟減去團隊價值。

我第一次嘗試沿着此線的東西:

def Tlog5(league, league_code): 
    total_runs_scored = 0 
    total_runs_allowed = 0 
    for team, scores in league.iteritems(): 
     total_runs_scored += float(scores[0]) 
     total_runs_allowed += float(scores[1]) 
     team_removed_runs = total_runs_scored - scores[0] 

不幸的是,這似乎是從只已經被重複,而不是完整的總價值減去。因此,對於字典中的第一支球隊,team_removed_runs爲0,對於第二支球隊來說,前兩支隊伍的總分數減去第二支球隊總數(只留下第一支球隊總數)。

我試過將team_removed_runs = total_runs_scored - scores [0]移出for循環,但之後我只獲得了字典中最後一個團隊的值。

是否有方法可以返回所有團隊的team_removed運行字典?

感謝您的幫助!

回答

6

如果你想在team_removed_runs˚F或詞典中的每個團隊,都需要返回字典並計算每個團隊的運行總數減去運行次數。像

team_removed_runs = {} 
for team, scores in league.iteritems(): 
    team_removed_runs[team] = [total_runs_scored - scores[0], 
           total_runs_allowed - scores[1]] 

這樣的東西會用的total_runs_scoredtotal_runs_allowed最終值對於整個聯賽,然後從總減去各支球隊的值,存儲在字典team_removed_runs結果。所以如果你想讓聯盟的價值減去費城人,你可以在

team_removed_runs['Phillies'] 
+0

我仍然有同樣的問題。因爲total_runs_scored尚未存儲,所以對於第一隊,該函數返回0,因爲它將從total_runs_scored中減去第一隊總數,該總數在該點上僅包含第一隊總數。不過,感謝您的幫助。 –

+0

添加我在您編寫的代碼之後編寫的代碼,以便您有兩個for循環。請參閱[完整代碼的pastebin](http://pastebin.com/m3byYxe0)。 – brc

+0

啊,我明白了!謝謝! –