如何从python中的另一个变量的内容创建一个新变量?

时间:2011-08-03 10:31:16

标签: python

这可能是一个非常简单的问题,但我被困在这里。 我有变量val为val="mandy",现在我想创建一个名称为val内容的列表。即“mandy”。那么如何在python中定义mandy=[]。 就像“$$”相当于PHP。

5 个答案:

答案 0 :(得分:2)

可以在Python中做这样的事情,但是这样做是非常非Pythonic的(而这是我收集的常见PHP习语)。请勿以不打算使用的方式使用该语言。

使用字典(Python中最大限度优化的数据类型)可以更好地完成您要做的事情:

>>> val = "mandy"
>>> mydict = {}
>>> mydict[val] = []
>>> mydict[val].append("Hello")
>>> mydict[val].append("Mandy")
>>> mydict
{'mandy': ['Hello', 'Mandy']}

答案 1 :(得分:1)

没有pythonic方法来创建具有变量名称的变量。这样做是一种不好的做法。相反,使用字典:

val = "mandy"
mynames = {}
mynames[val] = []

您现在可以访问mynames["mandy"]来获取或修改列表。

请注意,您可以通过修改locals在某些Python实现中实现类似php的行为,例如

>>> locals()['mandy'] = []
>>> mandy
[]

这样做强烈反对无法正常工作,但有些Python实现。

答案 2 :(得分:0)

你不能(没有黑客)而不应该。

改为使用字典values = {"mandy": []}

为什么你想要一个你不知道名字的局部变量?!如果您在编码时知道它的名字,请在花园种类的作业中使用它。如果不是,它不应该是局部变量。

答案 3 :(得分:0)

使用dict。您可以使用getattr / setattr或使用globals()来创建名称,但您很可能不需要它。

val = 'foo'
d   = { val: [] }

答案 4 :(得分:-3)

试试这个:

>>> val = 'mandy'
>>> vars()[val] = []
>>> mandy
[]

查看有关vars() builtin

的更多详情