我有一个全局变量1,2,3 ......我有一个变量“num”(它是一个字符串)可以是“一个”或“两个”或“三个”...我想要做下一件事:
if num == "one":
one = True
elif num=="two":
two = True
elif num=="three":
three = True
...
在perl中我可以使用1行:类似eval“$ num = True”而不是上面的long if。我怎么能在python中做到这一点?
答案 0 :(得分:8)
您可以使用globals()
作为字典访问全局名称:
globals()[num] = True
但您通常希望将数据保留在变量名称之外。在这里使用字典而不是全局字符:
numbers = {'one': False, 'two': False, 'three': False}
numbers[num] = True
或者也许是一个对象:
class Numbers:
one = two = three = False
numbers = Numbers()
setattr(numbers, num, True)
答案 1 :(得分:0)
如果您想构建一个字典,其中您的密钥是“一个”,“两个”等......并且值为False。那么你需要做的就是:
if num in switch_dict:
switch_dict[num] = True
然后,要获得有意义的数据,您需要做的就是
print switch_dict[num]
或控制流程
if switch_dict[num]:
<do stuff>
答案 2 :(得分:0)
虽然最有可能的是,有better ways可以完成你正在尝试的任何事情,但这是如何:
one, two, three = False, False, False
print "before:", one, two, three # before: False False False
num = "two"
eval("globals().update({%r: True})" % num)
print " after:", one, two, three # after: False True False