2015-04-06 105 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}