在Python循环中用字典值从迭代总和中减去

2 投票
1 回答
1464 浏览
提问于 2025-04-17 02:31

我在用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']

撰写回答