2014-01-06 202 views
0

之后附加一个整数到变量名的末尾,我现在问了很多谷歌搜索。有没有办法将一个整数追加到变量名的末尾。基本上在for循环的每次迭代中创建一个新变量。 IE:有没有办法在python

def parser(lst): 
    count = 0 
    for obj in lst: 
     if isinstance(obj,list): 
      parser(obj) 
     else: 
      for string in obj: 
       var+count = o 

这是我所得到的,当我尝试上面的代码运行:

SyntaxError: can't assign to operator 
+0

为了帮助您解决问题,请向我们展示有效的代码片段以重现问题并清楚地说明您正在尝试做什么。 – thefourtheye

+0

这是关于SO的大量问题的重复,尽管对于不知道答案的人可能并不明显。博客文章[将数据保留在变量名称之外](http://nedbatchelder.com/blog/201112/keep_data_out_of_your_variable_names.html)和[您不想动态创建变量的内容](http://stupidpythonideas.blogspot .com/2013/05/why-you-dont-want-to-dynamic-create.html)解释为什么这是一个糟糕的设计,并告诉你如何在极少数情况下做到这一点,并且链接到一堆其他SO问题与有用的答案。 – abarnert

+0

@thefourtheye数据只是我的Gmail邮件联系人的“outlook csv”形式。上面的代码仅用于实验目的,以确定它是否可行。但是看到这样做是不切实际的,这样做没有意义。 – Matt

回答

6

你几乎肯定要使用一个列表:代替

def parser(lst): 
    vars = [] 
    for obj in data: # did you mean "for obj in lst:"? 
     if isinstance(obj,list): 
      parser(obj) 
     else: 
      for string in obj: 
       vars.append(o) # did you mean "vars.append(string)"? 

然后,说,var5,你会使用vars[5]

+0

+1但缺少SSCCE。 cving ... – thefourtheye

+0

@ DoorknobofSnow谢谢。你的假设也是正确的,'数据'应该是'第一'。 '数据'是持有清理过的“数据”的ar的名称。感谢您的支持,Post编辑。 – Matt

1

斯诺的门把手的答案是正确的,但为了完整性,您可以使用locals()[var + str(count)] = o创建一个新变量。但这是一个坏主意,所以不要。

+0

也谢谢你。这是有帮助的。采取的建议。 – Matt