Python 将变量设置为一行中的两个if语句

Python 将变量设置为一行中的两个if语句,python,if-statement,Python,If Statement,我需要变量按如下方式工作: fppg_multiplier = 2 if row['Roster Position'] == 'MVP' else 1.5 if row['Roster Position'] == 'STAR' else 1 我如何在一行中完成这项工作 @SitesRegistry.register_csv_importer class DraftKingsCaptainModeCSVImporter(DraftKingsCSVImporter): # pragma: noc

我需要变量按如下方式工作:

fppg_multiplier = 2 if row['Roster Position']
== 'MVP' else 1.5 if row['Roster Position'] == 'STAR' else 1
我如何在一行中完成这项工作

@SitesRegistry.register_csv_importer
class DraftKingsCaptainModeCSVImporter(DraftKingsCSVImporter):  # pragma: nocover
        site = Site.DRAFTKINGS_CAPTAIN_MODE

        def _row_to_player(self, row):
            try:
                fppg_multiplier = 2 if row['Roster Position'] == 'MVP' else 1
                fppg_multiplier = 1.5 if row['Roster Position'] == 'STAR' else 1
                name = row['Name'].split()
                player = Player(
                    row['ID'],
                    name[0],
                    name[1] if len(name) > 1 else '',
                    row['Roster Position'].split('/'),
                    row['TeamAbbrev'],
                    float(row['Salary']),
                    float(row['AvgPointsPerGame']) * fppg_multiplier,
                    game_info=self._parse_game_info(row),
                    **self.get_player_extra(row)
                )
            except KeyError:
                raise LineupOptimizerIncorrectCSV
            return player

如果在单行中写入非常重要,则可以编写如下自定义函数:

def getval(x):
    if x=='MVP':
        return(2)
    elif x=='STAR':
        return(1.5)
    else:
        return(1)
然后只要在需要时调用该函数即可。例如:

fppg_multipler = getval(row['Roster Position'])

如果我将所有代码放在一行中,您的代码对我有效:

>>> row = {}
>>> row['Roster Position'] = 'MVP'
>>> fppg_multiplier = 2 if row['Roster Position'] == 'MVP' else 1.5 if row['Roster Position'] == 'STAR' else 1
>>> fppg_multiplier
2
>>> row['Roster Position'] = 'STAR'
>>> fppg_multiplier = 2 if row['Roster Position'] == 'MVP' else 1.5 if row['Roster Position'] == 'STAR' else 1
>>> fppg_multiplier
1.5
>>> row['Roster Position'] = 'XXX'
>>> fppg_multiplier = 2 if row['Roster Position'] == 'MVP' else 1.5 if row['Roster Position'] == 'STAR' else 1
>>> fppg_multiplier
1

运行此命令可以获得什么输出?您是否有错误?是否有特定的原因使其必须在一行中?通常,当您努力使内容尽可能简短时,您会丢失该语言的许多pythonic特性,可读性也会大大降低。无错误fppg仅等于1.5。看起来您编写的第一个代码块应该可以工作