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。看起来您编写的第一个代码块应该可以工作