动态分配变量名称?

时间:2014-11-10 18:22:41

标签: python loops variables

我正在尝试创建动态变量名称作为循环的一部分,然后分配适当的值。为了更清楚地展示我创建此演示代码后的内容:

var1 = ["one","two","three"]
var2 = ["red","blue","green"]

for i in 0 to 2:
    var3 = var1[i] #cycle through first list
    var4 = var2[i] #cycle through second list

    var5 = var3,var4 #make the name of var5 a concatenation of var 3 and var 4

    var5 = 1 #assign this dynamic variable name an arbitary value

print var5

我不确定如何接近的是行var5 = var3,var4。我甚至不确定这是解决问题的最佳方法。有人可以请:

1)填写上面引用的行的空白 2)完全建议替代语法

我需要动态变量名的原因在于我的实际代码我用于循环,其中循环中的每个数字都附加了不同的条件。如果我对我的方法有点偏离,请道歉。

修改

我的回答表明我没有明确表达我的要求。我的示例输出必须采用以下格式:

one_red = 1
two_blue = 1
three_green = 1

我之所以要求它们具有不同的变量名称是因为我最终将加入我的输出。所以我的最终输出是:

111

加入部分现在并不重要,但重要的是我在一个循环中以编程方式创建变量,每个循环都会赋予它们自己的值。

由于

3 个答案:

答案 0 :(得分:2)

使用字典而不是动态分配变量名称。此外,您可以使用var3缩短var4zip行 - 请参阅Is there a better way to iterate over two lists, getting one element from each list for each iteration?

此时,您的代码将类似于:

var1 = ["one","two","three"]
var2 = ["red","blue","green"]

d = {}
for var3, var4 in zip(var1, var2):
     d[var3 + var4] = 1

print d
# {'twoblue': 1, 'threegreen': 1, 'onered': 1}

答案 1 :(得分:0)

我会使用字典或其他东西,而不是尝试按名称创建变量。从每个列表连接:

>>> names = [''.join(i) for i in zip(var1, var2)]
>>> names
['onered', 'twoblue', 'threegreen']

然后你可以让你的字典查找,例如

>>> {name : index for index, name in enumerate(names)}
{'twoblue': 1, 'onered': 0, 'threegreen': 2}

答案 2 :(得分:0)

var5 = var3,var4 #make the name of var5 a concatenation of var 3 and var 4

注意这一行为var5赋值元组(var3,var4)。它没有连接两个字符串。

大卫罗宾逊和其他人指出,使用字典。我只是认为我标记了连接问题。