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

标签 python python-2.7 enums

我不太清楚这个问题怎么说。所以就这样吧。我有这段代码看起来很糟糕。 recommendation只取5个case。

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

我想让它成为 pythonic。我该怎么做?我读过枚举,看起来它可能是我的解决方案。但我对任何看起来优雅的解决方案持开放态度。我还在用python2.7 谢谢。

最佳答案

使用键、值的字典。其中 key 是传入状态,value 是传出状态。 这是一种高度 Pythonic 模式,您可能会一次又一次地重复使用它。在许多情况下,您会希望在输入状态上进行分派(dispatch),您应该将函数作为值放入字典中。

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]

关于python:如何将if语句转换为枚举或使其成为pythonic,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25577929/

相关文章:

java - HashMap 字段不更新

python - 我应该如何最好地模拟和/或避免 Python 中的枚举?

F# 中的字符串枚举

python - 等价于复杂列表理解的循环表达式

python - 在 Python 中使用 nltk 模块拆分单词

python - 如何在 ElementTree 元素中表示多个文本部分?

python - 使用 tkinter 获取命令窗口输出以显示在小部件中

python - 使用 unicode 以任何语言保存文件

python - 如何从笔记本单元终止当前的 colab session

python - 我们如何在与 joblib 的并行执行中使用 tqdm?