python:如何将if语句转换为枚举或使其成为pythonic

vt2*_*253 2 python enums python-2.7

我不太清楚怎么说这个问题.所以这里.我有这个看起来很糟糕的代码. recommendation只需要5个案例.

if avg_recommendation=='BUY':
    recommendation=5
if avg_recommendation=='OVERWEIGHT':
    recommendation=4
if avg_recommendation=='HOLD':
    recommendation=3
if avg_recommendation=='UNDERWEIGHT':
    recommendation=2
if avg_recommendation=='SELL':
    recommendation=1
Run Code Online (Sandbox Code Playgroud)

我想把它变成pythonic.我该怎么做?我读过enum,看起来它可能是我的解决方案.但我愿意接受任何优雅的解决方案.我还在使用python2.7谢谢.

Ali*_*har 5

使用键,值的字典.其中key是传入状态,值是传出状态.这是一种高度Pythonic模式,你可能会一次又一次地重复使用.在许多情况下,您将需要在输入状态上进行调度,您应该将函数作为值放在dict中.

recs = {
  'SELL':        1,
  'UNDERWEIGHT': 2,
  'HOLD':        3,
  'OVERWEIGHT':  4,
  'BUY':         5,
}

# this will fail correctly with a KeyError for non-expected states.
recommendation = recs[avg_recommendation]
Run Code Online (Sandbox Code Playgroud)