2015-04-06 126 views
0
IM

嗨相對較新,在Python編碼的元素變量名這樣下去容易對我創建基於陣列蟒蛇

我想創建這些變量的基礎關閉一個字符串數組元素的名稱整型變量並將它們都設置爲零開始(爲了節省我手動編碼20個變量)。字符串數組如下所示。

filterKeywords = ['IBM', 'Microsoft', 'Facebook', 'Yahoo', 'Apple',  'Google', 'Amazon', 'EBay', 'Diageo', 
       'General Motors', 'General Electric', 'Telefonica', 'Rolls Royce', 'Walmart', 'HSBC', 'BP', 
       'Investec', 'WWE', 'Time Warner', 'Santander Group'] 

我不想變量名是陣列中的元件的準確名稱,但是我希望變量名稱包含從數組中的元素,例如用於字符串元素「蘋果」我想我的變量名是'applePositive'。我試圖實現這一點,在這裏它下面是(IM甚至不知道這是否是正確的格式或沒有)

for word in filterKeywords: 
    [word + "Positive"] = 0 

即時得到一個不能分配操作失誤與這一點,我用盡也丟給一個int,但它似乎並不喜歡這種(可能做錯了,因爲我習慣於在C#編碼)。

任何幫助將不勝感激。

+1

不要那樣做。改用字典。 – kindall

+0

借調。像這樣創建變量名不是一個好主意,也不可能使用字符串中的空格。一本字典會更合適。 –

回答

2

您正在查找dict

vars = {} 
for word in filterKeywords: 
    vars[word + "Positive"] = 0 

然後使用它然而,你想要的,例如,說,print vars["applePositive"]

您可以訪問所有的「名」與vars.keys()

可以在所有的項目做進一步的計算太

for word, value in vars.iteritems(): 
    # do something 
    print word, value 

for i in vars: 
    print i, vars[i] 

如果在某些時候,你如果「applePositive」在你的字典中並且有價值,那麼你可以做'applePositive' in vars,它會返回TrueFalse

,然後如果你決定要1加起來也只有Facebook和蘋果的價值,你可以做到這一點

for i in ['applePositive', 'facebookPositive']: 
    if i in vars: 
     vars[i] += 1 
+0

感謝您的快速響應!正如我所說,我對這個如此糟糕的工具相對比較陌生,現在我的代碼 – philmckendry

+0

'applePositive in vars'就足夠了......不需要提取密鑰。 –

+0

@JulienSpronck你是真的,會編輯! – ComputerFellow

1

可以使用DIC理解每個值放到字典

filterKeywords = ['IBM', 'Microsoft', 'Facebook', 'Yahoo', 'Apple'] 
d = {k + "positive":0 for k in filterKeywords} 

,輸出:

{'IBMpositive': 0, 'Yahoopositive': 0, 'Microsoftpositive': 0, 'Facebookpositive': 0, 'Applepositive': 0}