2011-09-18 11 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だった。第2チームの場合は、最初の2チームの合計から2チーム目の合計を差し引いた合計(最初のチームの合計を残して)だった。

forループの中からteam_removed_runs = total_runs_scored - score [0]を移動しますが、辞書の最後のチームの値しか得られません。

すべてのチームで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に結果を記憶し、その合計から各チームの値を減算します。だから、もしあなたがリーグの合計の価値をPhilliesより少なくしたいのなら、これは

team_removed_runs['Phillies'] 
+0

でも同じ問題があります。 total_runs_scoredはまだ格納されていないため、最初のチームの場合は、total_runs_scoredから最初のチームの合計を減算するため、この関数は0を返します。しかし、助けてくれてありがとう。 –

+0

あなたが書いたコードの後に​​書いたコードを追加して、forループが2つあるようにします。 [pastebin full code](http://pastebin.com/m3byYxe0)を参照してください。 – brc

+0

ああ、私は見る!ありがとう! –

関連する問題