列表索引必须是整数错误

问题描述:

我有我的Python代码来以下错误:列表索引必须是整数错误

if data['result'] == 0: 
TypeError: list indices must be integers, not str 

以下是代码:

data = urllib.urlencode(parameters) 
req = urllib2.Request(url, data) 
try: 
    response = urllib2.urlopen(req) 
except urllib2.URLError, e: 
    self.redirect('/error') 
json_post = response.read() 
data = json.loads(json_post) 
response_dict = simplejson.loads(json_post) 

virustotal = VirusTotal() 
if data['result'] == 0: 
    virustotal_result = True 

elif data['result'] == -2: 
    self.response.out.write("API Request Rate Limit Exceeded<br/>") 
elif data['result'] == -1: 
    self.response.out.write("API Key provided is wrong<br/>") 
elif data['result'] == 1: 
    self.response.out.write("Time Stamp : %s<br/>"% data['report'][0]) 

我知道数据是一个列表。所以我将它改为整数,但代码显示范围错误。请帮忙??

+0

如果你打印'data',你会得到什么? – thegrinner 2013-04-29 17:27:18

当你说data = json.loads(json_post),这听起来像你有一个清单,而不是你似乎期待的字典。

如果这不是问题,请尝试使用完整回溯和值json_post进行更新。

+0

我是新来的python,我读了关于字典和列表,但我不知道如何将它改为整数索引。 – carol 2013-04-29 17:21:16

+2

答案取决于你对数据的理解。考虑阅读http://docs.python.org/2/tutorial/以了解Python数据类型。 – 2013-04-29 17:24:20

您正在从response.read返回一组对象,这意味着您得到的是Python list。试试这个:

data = json.loads(json_post)[0] 
+0

它现在给出错误,“列表超出范围” – carol 2013-04-29 17:26:59

+0

然后,也许你没有从读取调用中得到任何东西。 – cwallenpoole 2013-04-29 17:27:57