【问题标题】:Python convert string to variable namePython将字符串转换为变量名
【发布时间】:2014-10-02 10:25:18
【问题描述】:

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

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

我在追求类似的东西:

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

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

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

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

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

【问题讨论】:

标签: string variables python-3.x dictionary


【解决方案1】:

尝试以下方法:

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

不要使用list 作为你的标识符,因为它是一个类型标识符,你会掩盖它的存在。 for 循环可以直接迭代里面的元素——不需要构造索引并使用它来对抗列表。 d['spam'] 将是您的变量之一。

虽然也可以创建真正的变量名,例如spam、eggs、ham,但您可能不会这样做,因为效果将毫无用处。 p>

【讨论】:

  • :) Arthur 快了 14 秒。
【解决方案2】:

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

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']),并且您正在使用您的值列表覆盖它现在。

【讨论】:

    【解决方案3】:

    一种方法是将变量名称设置为字符串并通过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]
    

    【讨论】:

      猜你喜欢
      • 2022-08-11
      • 2011-08-27
      • 2010-12-04
      • 1970-01-01
      • 1970-01-01
      • 2015-10-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多