Вы создаете новый словарь на каждой итерации. Вместо этого вы должны создать словарь до l oop и затем добавлять новую запись на каждой итерации:
def get_team_points(df, teams):
team_points = {}
for team_name in teams:
num_points = ... # as you have it but since you posted an image I'm not rewriting it
team_points[team_name] = num_points
return team_points
Более точное решение - использовать словарное понимание
def get_team_points(df, teams):
team_points = {team: get_num_points(team, df) for team in teams}
return team_points
, где get_num_points
- это функция вашей строки num_points = ...
, которую я бы снова напечатал, если бы вы опубликовали код в виде текста:)
Также - пожалуйста, начните использовать лучшие имена переменных;) ваша жизнь улучшится, если вы делаете. Такие имена, как List и Dict, действительно плохие, поскольку:
- они не описательные
- они скрывают встроенные классы из модуля ввода (который вы должны использовать)
- они нарушают соглашения о присвоении имен pep8
и, говоря о модуле набора, вот оно в действии:
def get_team_points(df: pd.DataFrame, teams: List[str]) -> Dict[str, int]:
team_points = {team: get_num_points(team, df) for team in teams}
return team_points
теперь вы можете использовать такой инструмент, как mypy, чтобы ловить ошибки перед тем они происходят. Если вы используете IDE вместо Jupyter, он будет выделять ошибки, как вы go. Кроме того, ваш код станет намного понятнее для других разработчиков (включая вас в будущем) для понимания и использования.