Python分派表字符串变量

2024-04-29 02:51:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要使用字符串来确定要运行的计算。我尝试使用调度表而不是elif梯形图。我需要运行一些单行程序,一些多行函数,并且我需要基于传入状态的一部分运行一个函数

这段代码简化为解释。前4个功能正常,但后3个功能不正常

<!-- language: python -->
Fun = functions.get(reference, lambda : print('Invalid Ref'))
fun(my_df, start, stop)

def Ripple(df, start, stop):#Some multi-line function
    temp = df.trc3_s12_db[df.index >= start, df.index <= stop]
    return temp.values.max() - temp.values.min()

def RAve(df, start, stop, ave, spacing=100):#Changing function
    return df.trc3_s12_db.rolling(ave*spacing).[df.index >= start, df.index <= stop].min()

functions = { #Dispatch Table
    'MinA': lambda df, start, stop: df[df.index >= start, df.index <= stop].tA.min() * (-1),
    'MaxA': lambda df, start, stop: df[df.index >= start, df.index <= stop].tA.max() * (-1),
    'MinB': lambda df, start, stop: df[df.index >= start, df.index <= stop].tB.min() * (-1),
    'Ripple': Ripple,
    '5MHz Ave': RAve(ave=5),
    '2.2MHz Ave': RAve(ave=2.2),
    '%dMHz Ave': RAve(ave=%d) #Is this possible?
}

我知道我可以使用元组传递函数和参数,但是整个表需要是元组

我可以通过字符串的格式将变量传递到分派表中吗? 对这些可能性进行分类的最佳方式是什么


Tags: lambda函数字符串功能dfindexminfunctions
1条回答
网友
1楼 · 发布于 2024-04-29 02:51:35

对于第一部分,看起来您正在尝试创建一个分部函数,一个由另一个函数组成的函数,其中一些参数“烧入”

对于第二部分'%dMHz Ave': RAve(ave=%d) #Is this possible?-不,这是不可能的。您需要一些其他逻辑来检测这种情况,然后在这种情况下使用调度表(dict)以外的其他逻辑。例如,使用regexp检查表达式是否匹配"xxxMHz Ave",在这种情况下使用RAve(ave=xxx)m

相关问题 更多 >