【问题标题】:Set python variable conditionally有条件地设置python变量
【发布时间】:2012-05-30 09:17:16
【问题描述】:

我想根据另一个变量设置一个变量。就我而言 var1 可以是“mean”、“sum”或“max”(从 gui 解析的输入)。基于我想要的这些字符串 (有条件地)设置另一个变量;比如:如果 var1 是“平均”,那么 var2 = 2,如果 var1 = "sum" 则 var2=4,如果 var1 = "max" 则 var2 = 6。

最好的方法是什么(对于初学者)?如果我在 if else 程序中使用它,我 需要将变量设为全局变量以在 if 之外使用它们吗? 有推荐的程序吗?

【问题讨论】:

  • “如果我在 if else 过程中使用它,我需要将变量设为全局变量以便在 if 之外也使用它们?” 不,但声明是有意义的变量。
  • 遵循字典构建过程。

标签: python variables


【解决方案1】:

使用字典:

d = {'mean': 2,
     'sum': 4,
     'max': 6}
var2 = d.get(var1)

如果var1 不包含在d 中,var2 将默认为None。如果你想要另一个默认值:

var2 = d.get(var1, 0)

【讨论】:

  • 该死,比我快 30 秒。
  • @ChristianWitts 好久不见……我之前输过 4 秒!
【解决方案2】:

由于 python 没有内置的 switch-case 语句,一个 pythonic 的方法是使用 dict:

>>> d = {'mean': 2, 'sum': 4, 'max': 6}
>>> var1 = "max"
>>> var2 = d[var1]
>>> var2
6

您不再需要考虑变量的范围(尽管考虑它是个好问题!)。

【讨论】:

    【解决方案3】:

    用字典怎么样?

    mapping = {'mean': 2
             , 'sum' : 4
             , 'max' : 6
              }
    var1 = 'mean'
    var2 = mapping[var1]
    # or
    var2 = mapping.get(var1) # To avoid KeyErrors
    

    【讨论】:

      猜你喜欢
      • 2011-12-28
      • 2018-07-06
      • 1970-01-01
      • 2014-01-04
      • 2011-02-10
      • 1970-01-01
      • 2014-10-06
      • 2020-08-14
      • 2013-02-13
      相关资源
      最近更新 更多