Python 从字典中删除特定位置

Python 从字典中删除特定位置,python,dictionary,Python,Dictionary,我需要从潜在球员字典中删除投手('p')。 我试过了 team:[player for player in player\u dict.keys()如果player.team==team and player.positions!='p'] 但它仍然创建了一个包含玩家的字典 class TeamStacksRule(OptimizerRule): def apply(self, solver, players_dict): stacks = self.optimizer.

我需要从潜在球员字典中删除投手('p')。 我试过了

team:[player for player in player\u dict.keys()如果player.team==team and player.positions!='p']

但它仍然创建了一个包含玩家的字典

class TeamStacksRule(OptimizerRule):
    def apply(self, solver, players_dict):
        stacks = self.optimizer.team_stacks
        players_by_teams = {
            team: [player for player in players_dict.keys() if player.team == team]
            for team in self.optimizer.available_teams
        }

        stacks_dict = {}
        for i, stack in enumerate(sorted(stacks, reverse=True), start=1):
            stacks_dict[stack] = i

        for stack, total in stacks_dict.items():
            combinations_variables = []

            for team, players in players_by_teams.items():
                solver_variable = solver.add_variable('teams_stack_%d_%s' % (stack, team))
                combinations_variables.append(solver_variable)
                variables = [players_dict[player] for player in players]
                solver.add_constraint(variables, None, SolverSign.GTE,
                                      stack * solver_variable)
            solver.add_constraint(combinations_variables, None, SolverSign.GTE, total)

请为您的程序指定输入,以及您希望该输入的输出是什么。“但它仍然创建了一个字典…”该代码创建了一个列表作为输出,而不是字典。我注意到该属性被称为
positions
,而不是
position
。一个球员有可能拥有多个位置吗?如果是这样的话,
positions
很可能是一个列表而不是字符串。这意味着
player.positions!='P'
始终为真,因为列表永远不等于字符串。如果你不在player.positions中执行
'P',会发生什么情况?@Kevin谢谢你的工作。请为你的程序指定输入,你希望该输入的输出是什么。“但它仍然创建了一个字典…”该代码创建了一个列表作为输出,而不是字典。我注意到该属性被称为
positions
,而不是
position
。一个球员有可能拥有多个位置吗?如果是这样的话,
positions
很可能是一个列表而不是字符串。这意味着
player.positions!='P'
始终为真,因为列表永远不等于字符串。如果你不在玩家的位置上使用P,会发生什么?@Kevin谢谢你,这很有效