繁体   English   中英

在python中字典中最有效的方法是什么?

[英]What is the most efficient way to a multiple variable in dictionary in python?

我正在寻找的这是我的代码,这是以其他最有效的方式进行编码的方法吗? 我有多个变量,并插入到字典中。 请提出建议,其他选项(例如array等)也可以。

def momentEndSpan(span_type,max_combo,length):
    if "simply supported" == span_type:
        q = max_combo
        force = {}
        RA = {"PA" : q*length/2}
        RB = {"PB" : q*length/2}
        RA_moment = {"MA" : 0}
        R_mid_moment = {"Mmid": (q*math.pow(length,2))/8 }
        RB_moment = { "MB" : 0}
        force.update(RA)
        force.update(RB)
        force.update(RA_moment)
        force.update(R_mid_moment)
        force.update(RB_moment)
        return force
    elif "one end continuous" == span_type:
        q = max_combo
        x = (3/8)*length
        force = {}
        RA = {"Phinge" : 3*q*length/8}
        RB = {"Pfixed" : 5*q*length/8}
        RA_moment = {"Mhinge" : 0}
        R_mid_moment = {"Mmid": (q*math.pow(length,2))*(9/128) }
        RB_moment = { "MB" : -1*(q*math.pow(length,2))/8 }
        force.update(RA)
        force.update(RB)
        force.update(RA_moment)
        force.update(R_mid_moment)
        force.update(RB_moment)
        return force        

非常感谢你

“更多Python语言”方法是创建一个字典并更新一次。

q = max_combo
force = {} 

if "simply supported" == span_type:
    new = {"PA" : q*length/2,
           "PB" : q*length/2,
           "MA" : 0, "Mmid": (q*math.pow(length,2))/8,
           "MB" : 0}

elif "one end continuous" == span_type:
        x = (3/8)*length
        new = {"Phinge" : 3*q*length/8,
               "Pfixed" : 5*q*length/8,
               "Mhinge" : 0,
               "Mmid": (q*math.pow(length,2))*(9/128),
               "MB" : -1*(q*math.pow(length,2))/8 }

force.update(new)

另外,请注意,如果force字典不包含任何先前定义的项目,则可以简单地返回new和/或在有任何后续操作的情况下继续更新new 或者只使用name force而不是new

q = max_combo

if "simply supported" == span_type:
    force = {...}

elif "one end continuous" == span_type:
        x = (3/8)*length
        force = {...}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM