PYTHON如何根据需要制作尽可能多的变量

时间:2011-08-04 16:28:16

标签: python

我有一个正在读取文本文件的循环。每次循环找到不同的东西时,我希望它创建一个新变量并将该行文本中的值赋给新创建的变量。因此,如果文本文件如下所示:

3 3 6 1 3 6

该程序将产生3个变量,一个用于1个,一个用于3个,一个用于6.如何执行此操作>

6 个答案:

答案 0 :(得分:3)

你可能想要的是......

>>> set("3 3 6 1 3 6".split())
set(['1', '3', '6'])

答案 1 :(得分:1)

有几种方法:

mydict = {}
for x in myfile.read().split():
    mydict[x] = None
print mydict

或者:

class VarContainer(object):
    pass
v = VarContainer()
for x in myfile.read().split():
    setattr(v, 'var' + x, None)
print v.var3

但是你要做的事情有点不清楚。

答案 2 :(得分:1)

您可以使用exec内置来创建变量。

Python 2.5.1 (r251:54863, May 18 2007, 16:56:43)
[GCC 3.4.4 (cygming special, gdc 0.12, using dmd 0.125)] on cygwin
Type "help", "copyright", "credits" or "license" for more information.
>>> a = [3,3,6,1,3,6]
>>> for e in a:
...     exec 'var%s = %e' % (e,e)
...
...
>>> var3
3.0
>>> var6
6.0
>>> var1
1.0
>>>

修改 这是一个糟糕的解决方案,永远不应该使用。然而,重要的是要知道这样的事情是可能的。

答案 3 :(得分:0)

您可以将值存储在数组中:

(假设python 2.7) http://docs.python.org/library/array.html

然后,您可以使用array.index(x)搜索该值是否已存在于数组中,并array.append(x)将其添加到数组中

答案 4 :(得分:0)

假设text_file是可迭代的,

def get_unique_numbers(text_file):
   temp = []
   for number in text_file:
      if number not in temp:
         temp.append(number)
   return temp

答案 5 :(得分:0)

此代码应该按照您的要求执行。

import sys 
from string import ascii_letters 

# Task 1, remove duplicate elements. 
def nodup(fn): 
    f = open(fn) 
    data = f.read().split() 

    res = [] 
    res.extend((i for i in data if i not in res)) 
    return res 

# Task 2, create the new variables on the fly 
module = sys.modules[__name__] 
filename = "data" 
for idx, value in enumerate(nodup(filename)): 
    setattr(module, ascii_letters[idx], value) 

print (a, b, c) 
# ('3', '6', '1')