列表索引必须是整数错误
我有我的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])
我知道数据是一个列表。所以我将它改为整数,但代码显示范围错误。请帮忙??
当你说data = json.loads(json_post)
,这听起来像你有一个清单,而不是你似乎期待的字典。
如果这不是问题,请尝试使用完整回溯和值json_post
进行更新。
我是新来的python,我读了关于字典和列表,但我不知道如何将它改为整数索引。 – carol 2013-04-29 17:21:16
答案取决于你对数据的理解。考虑阅读http://docs.python.org/2/tutorial/以了解Python数据类型。 – 2013-04-29 17:24:20
您正在从response.read
返回一组对象,这意味着您得到的是Python list
。试试这个:
data = json.loads(json_post)[0]
它现在给出错误,“列表超出范围” – carol 2013-04-29 17:26:59
然后,也许你没有从读取调用中得到任何东西。 – cwallenpoole 2013-04-29 17:27:57
如果你打印'data',你会得到什么? – thegrinner 2013-04-29 17:27:18