在Python循环中用字典值从迭代总和中减去
我在用Python 2.7。
我有一个字典,字典的键是球队名字,值是一个列表。这个列表的第一个值是球队得分,第二个值是对方得分:
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]移出循环,但这样我只得到了字典中最后一个球队的值。
有没有办法让我能得到字典中所有球队的team_removed_runs?
谢谢大家的帮助!
1 个回答
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]]
这个过程会使用整个联赛的最终得分 total_runs_scored
和被允许的总得分 total_runs_allowed
,然后从这个总数中减去每个球队的得分,最后把结果存储在字典 team_removed_runs
中。所以,如果你想要得到联赛总得分减去费城人队的得分,你可以在这里找到这个值:
team_removed_runs['Phillies']