Python将字符串转换为变量名称

时间:2014-10-02 10:25:19

标签: string variables python-3.x dictionary

我知道这可能会出现重复,但到目前为止,我还没有找到(或者应该理解)我正在寻找的答案。

我有一个字符串列表,并希望将每个字符串转换为变量名称,然后我将其分配给。我知道我可能需要一个dict,但我不熟悉它们,因为我对python相对较新,到目前为止我看到的所有例子都在处理值,而我正在尝试不同的东西。

我喜欢这样的事情:

list = ['spam', 'eggs', 'ham']

for i in range(len(list)):
    list[i] = rat.readColumn(ratDataset, list[i])

其中第一个列表[i]是变量名而不是字符串。第二个列表[i]是一个字符串(对于上下文是从栅格属性表(鼠标)读取的列的名称)

基本上我希望列表中的每个字符串都被设置为变量名。

这背后的想法是我可以创建一个循环,而不必为我想要的每个变量写出行,匹配鼠标列名(字符串)。也许有一种啤酒方式可以做到这一点,而不是我的建议?

3 个答案:

答案 0 :(得分:3)

尝试以下方法:

lst = ['spam', 'eggs', 'ham']
d = {}   # empty dictionary
for name in lst:
    d[name] = rat.readColumn(ratDataset, name)

不要将list用于您的标识符,因为它是一个类型标识符,您将屏蔽它的存在。 for循环可以直接迭代内部元素 - 不需要构造索引并使用它来放置列表。 d['spam']将是您的变量之一

虽然也可以创建真实变量名称,如spameggsham,但您可能不会这样做没用。

答案 1 :(得分:1)

这里有一个简单的字典用法:

variables = ['spam', 'eggs', 'ham']
data = {}

datum = 0

for variable in variables:
    data[variable] = datum
    datum+=1

print(data)
print("value : ",data[variables[2]])

结果如下:

{'eggs': 1, 'ham': 2, 'spam': 0}
value : 2

注意:不要使用list作为变量名称,list是一个类型标识符,可用于将对象转换为列表(如果可能)(list("abc")==['a', 'b', 'c'])并且您要覆盖它现在与你的价值表一起。

答案 2 :(得分:0)

一种方法是将变量名称设置为字符串,然后通过format()方法更改其一部分或全部,然后通过vars()[STRING]

将字符串用作变量。
import numpy as np
X1= np.arange(1,10)                                                                                                                                
y1=[i**2 for i in X1]                                                                                                                                
X2= np.arange(-5,5)                                                                                                                                
y2=[i**2 for i in X2]                                                                                                                          
for i in range(1,3): 
    X = 'X{}'.format(i) 
    y = 'y{}'.format(i) 
    print('X_{}'.format(i) , vars()[X])
    print('y_{}'.format(i) , vars()[y])

输出:


X_1 [1 2 3 4 5 6 7 8 9]
y_1 [1, 4, 9, 16, 25, 36, 49, 64, 81]
X_2 [-5 -4 -3 -2 -1  0  1  2  3  4]
y_2 [25, 16, 9, 4, 1, 0, 1, 4, 9, 16]