首页 > 解决方案 > Python:解决这个凌乱的 if else 结构更好

问题描述

我已经坚持了一段时间。我还没有真正写过这段代码,但如果我写的话,它看起来像这样;

i = 0  # this is an int I get from somewhere else
s = "" # this is the string that I ultimately want to use for something
if i < 1:
    s = "string1"
elif i < 5:
    s = "string2"
elif i < 17:
    s = "string3"

等等。基本上我想分配一个不同的字符串来将不同的字符串分配给不同的区间,并且根据我属于哪个区间,我将相应的字符串分配给 s。

上面的例子真的很混乱,扩展/更改看起来很痛苦。我在想这可以用字典来解决,但我似乎不太明白。

标签: pythonif-statementrefactoring

解决方案


由于 python 3.7 dicts 是有序的。因此,您可以将阈值定义为 dict 的键并将它们链接到字符串:

D = {1: 'string1',
     5: 'string2',
     17: 'string3'}

x = 10
s = ""
for i in D.keys():
    if x < i:
        s = D[i]
        break

这样您就可以在附近找到定义并保存一些if.


推荐阅读