小编J.G*_*ade的帖子

在switch字典中执行函数

将我开发的所有模块放入主程序时遇到问题.我创建的切换词典如下所示:

def Tank_Shape_Calcs(Tank_Shape, level, area, dish, radius, length, Strapping_Table, Tank_Number):

    switcher = {
        0: vertical.Vertical_Tank(level, area),
        1: horiz.Horiz_Cylinder_Dished_Ends(dish, radius, level, length),
        2: strapping.Calc_Strapped_Volume(Strapping_Table, level),
        3: poly.Fifth_Poly_Calcs(Tank_Number)
    }
    return switcher.get(Tank_Shape, "ERROR: Tank type not valid")
Run Code Online (Sandbox Code Playgroud)

罐形状在主文件中设置为每个罐的循环.第一辆坦克Tank_Shape = 2我希望它能执行这个Calc_Strapped_Volume()功能.

我曾尝试测试它,和切换功能绝对是读书Tank_Shape2.此外,如果我将函数更改为字符串,它将打印出正确的字符串.

问题是函数似乎是按顺序执行的,直到调用了正确的函数.这会导致错误,因为我使用的数据只能使用正确的函数.

有没有办法只执行正确的功能?

python dictionary function

18
推荐指数
3
解决办法
4136
查看次数

Python - 在NumPy数组中选择满足多个条件的行

我的程序包含许多不同的NumPy数组,每个数组中都有各种数据.数组的一个例子是:

x = [5, 'ADC01', Input1, 25000], # Where [TypeID, Type, Input, Counts]
    [5, 'ADC01', Input2, 40000]
Run Code Online (Sandbox Code Playgroud)

从单独的数组我可以检索的价值TypeInput.然后我需要说

Counts = x[0,3] where Type = 'ADC01' and Input = 'Input2'

显然它不会像这样写.对于我只需要满足一个条件的时间,我使用过:

InstType_ID = int(InstInv_Data[InstInv_Data[:,glo.inv_InstanceName] == Instrument_Type_L][0,glo.inv_TypeID])
Run Code Online (Sandbox Code Playgroud)

在这里,它在"InstanceName"列中查找数组(InstInv_Data)并找到与Instrument_Type的匹配项.然后,它将"TypeID"列分配给InstType_ID.我基本上想要添加一个and语句,因此它还在另一列中查找另一个匹配的数据.

编辑:我只是想我可以尝试在两个单独的步骤中执行此操作.返回两个InputCounts列在哪里Type-Column = Type.但是,我不确定如何实际返回两列,而不是特定的一列.像这样的东西:

Intermediate_Counts = (InstDef_Data[InstDef_Data[:,glo.i_Type] == Instrument_Type_L][0,(glo.i_Input, glo.i_Counts])
Run Code Online (Sandbox Code Playgroud)

python arrays numpy python-2.7

1
推荐指数
1
解决办法
1495
查看次数

标签 统计

python ×2

arrays ×1

dictionary ×1

function ×1

numpy ×1

python-2.7 ×1