Вычитание по значениям словаря из повторного итога в For Loop Python - PullRequest
2 голосов
/ 18 сентября 2011

Работа в 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 - Score [0] из цикла for, но затем я получил значение только для последней команды в словаре.

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

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

1 Ответ

6 голосов
/ 18 сентября 2011

Если вы хотите, чтобы 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']
...