在python中从两个字符串创建变量名

时间:2015-03-31 16:26:24

标签: python python-2.7

我希望用Python中的两个字符串创建一个变量名,例如:

 a = "column_number"
 b = "_url1"

然后能够获得我可以使用的变量名"column_number_url1"

我很欣赏这一般不是一个好主意 - 有很多帖子说明为什么这是一个坏主意(例如How do I create a variable number of variables?Creating multiple variables) - 我主要希望能够做到因为这些都是在代码中的其他地方定义的变量,并且想要一种能够重新访问它们的简单方法(即,而不是创建数以千计的唯一变量,我同意字典等会更好)

据我所知,我发现的其他帖子中的答案都是替代方法,而不是如何从两个字符串创建变量名称。

3 个答案:

答案 0 :(得分:11)

>>> a = "column_number"
>>> b = "_url1"
>>> x = 1234
>>> globals()[a + b] = x
>>> column_number_url1
1234

没有多少帖子解释如何执行此操作的原因是(因为您可能已经收集)它不是一个好主意。我保证你的用例也不例外。

如果您没有注意到,globals()本质上是全局变量的字典。这意味着你应该一直使用字典;)

答案 1 :(得分:1)

作为Joel答案的替代方案,字典会更好:

a = "column_number"
b = "_url1"
data = {}

data[a+b] = 42

答案 2 :(得分:1)

您可以使用字典:

a = "column_number"
b = "_url1"
obj = {}
obj[a+b] = None
print obj #{"column_number_url1": None}

或者,您可以使用eval,但请记住要始终关注eval / exec的使用情况:

a = "column_number"
b = "_url1"
exec(a+b+" = 0")
print column_number_url1 #0

eval is evil