2014-10-02 161 views
3

我知道這可能是作爲一個重複,但到目前爲止我還沒有找到(或應該被理解)一個答案,我在找什麼。Python將字符串轉換爲變量名稱

我有一個字符串列表,並希望將每個字符串轉換成一個變量名稱,然後我分配一些東西。我知道我可能需要一個字典,但我對它們並不熟悉,因爲我對python比較陌生,迄今爲止我看到的所有示例都處理值,而我嘗試了不同的東西。

林後是這樣的:

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

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

,其中第一列表[i]是一個變量名,而不是一個字符串。第二個列表[i]是一個字符串(並且上下文是從柵格屬性表(鼠)讀取的列的名稱)

本質上,我希望列表中的每個字符串都設置爲變量名稱。

這個想法背後是我可以創建一個循環,而不必寫出每個變量我想要的行,匹配大鼠列名稱(字符串)。也許有這樣的啤酒方式比我建議的要好?

+0

只是使用字典,你應該保持數據的變量名稱 – jonrsharpe 2014-10-02 10:33:07

+0

你能提供一些幫助,我可以做到這一點? – 2014-10-02 10:45:36

+0

https://docs.python.org/3/tutorial/datastructures.html#dictionaries – jonrsharpe 2014-10-02 11:16:25

回答

3

嘗試以下操作:

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

不要使用list您的標識符,因爲它是一個類型標識符,你會掩蓋它的存在。 for循環可以直接迭代內部的元素 - 不需要構造索引並使用它與列表結合使用。 d['spam']將是您的變量之一

雖然,它也可以創建真正的變量名spameggsham,你會不會可能這樣做的效果將是無用的。

+0

:)亞瑟快了14秒。 – pepr 2014-10-02 12:12:22

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("abc")==['a', 'b', 'c']),並且您現在正在使用值列表重寫它。