在For循环Python中通过字典值从Iterated Total中减去

Bur*_*ter 2 python iteration dictionary list subtraction

使用Python 2.7.

我有一个字典,团队名称作为键,值包含在列表中.第一个值是团队得分的运行量,第二个值是允许的运行:

NL = {'Phillies': [662, 476], 'Braves': [610, 550], 'Mets': [656, 687]}
Run Code Online (Sandbox Code Playgroud)

我有一个迭代每个键的函数,并提供整个字典得分和允许的总运行.我还希望能够从总数中减去每个团队,并创建联盟减去团队价值.

我首先尝试了以下方面:

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]
Run Code Online (Sandbox Code Playgroud)

不幸的是,这似乎只是从已经迭代的值而不是完整的总和中减去.因此,对于字典中的第一个团队,team_removed_runs为0,对于第二个团队,它是前两个团队减去第二个团队总数的总计(仅剩下第一个团队总数).

我试图将team_removed_runs = total_runs_scored - scores [0]移出for循环,但后来我只获得了字典中最后一个团队的值.

有没有办法可以为字典中的所有团队返回team_removed运行?

谢谢你的帮助!

brc*_*brc 6

如果您想要team_removed_runs字典中的每个团队,您需要返回字典并计算总运行次数减去每个团队的运行次数.就像是

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

这将使用的最终值total_runs_scored,并total_runs_allowed为整个联盟,然后从总减去各支球队的值,并将结果存储在字典中team_removed_runs.因此,如果你希望联盟的总价值低于费城人队,你可以找到这个

team_removed_runs['Phillies']
Run Code Online (Sandbox Code Playgroud)