我知道这可能会出现重复,但到目前为止,我还没有找到(或者应该理解)我正在寻找的答案。
我有一个字符串列表,并希望将每个字符串转换为变量名称,然后我将其分配给。我知道我可能需要一个dict,但我不熟悉它们,因为我对python相对较新,到目前为止我看到的所有例子都在处理值,而我正在尝试不同的东西。
我喜欢这样的事情:
list = ['spam', 'eggs', 'ham']
for i in range(len(list)):
list[i] = rat.readColumn(ratDataset, list[i])
其中第一个列表[i]是变量名而不是字符串。第二个列表[i]是一个字符串(对于上下文是从栅格属性表(鼠标)读取的列的名称)
基本上我希望列表中的每个字符串都被设置为变量名。
这背后的想法是我可以创建一个循环,而不必为我想要的每个变量写出行,匹配鼠标列名(字符串)。也许有一种啤酒方式可以做到这一点,而不是我的建议?
答案 0 :(得分:3)
尝试以下方法:
lst = ['spam', 'eggs', 'ham']
d = {} # empty dictionary
for name in lst:
d[name] = rat.readColumn(ratDataset, name)
不要将list
用于您的标识符,因为它是一个类型标识符,您将屏蔽它的存在。 for循环可以直接迭代内部元素 - 不需要构造索引并使用它来放置列表。 d['spam']
将是您的变量之一。
虽然也可以创建真实变量名称,如spam
,eggs
,ham
,但您可能不会这样做没用。
答案 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]