Вычитание по значениям словаря из повторного итога в For Loop 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] из цикла for, но тогда я получил значение только для последней команды в словаре.

Есть ли способ вернуть команды team_removed для всех команд в словаре?

Спасибо за любую помощь!

1 ответ

Решение

Если вы хотите 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']
Другие вопросы по тегам