Python 字符串索引必须是整数
我试图访问python中的JSON对象/字典,但出现错误: TypeError:如果脚本['title'],字符串索引必须是整数== “它”: 这是我尝试访问字典中特定密钥的代码:Python 字符串索引必须是整数,python,python-2.7,Python,Python 2.7,我试图访问python中的JSON对象/字典,但出现错误: TypeError:如果脚本['title'],字符串索引必须是整数== “它”: 这是我尝试访问字典中特定密钥的代码: def CreateScript(scriptsToGenerate): start = time.clock() apiLocation = "" saveFile = "" for script in scriptsToGenerate: print script
def CreateScript(scriptsToGenerate):
start = time.clock()
apiLocation = ""
saveFile = ""
for script in scriptsToGenerate:
print script
if script['title'] == "IT":
time = script['timeInterval']
baseItem = ""
scriptsToGenerate是使用它传入的,它向我的API发出HTTP请求
def GetScripts(urlParameters):
result = requests.get(constURLString + "/" + str(urlParameters)).json()
return [x for x in result if x != []]
这就是我称之为CreateScript的地方
def RunInThread(ID):
startedProcesses = list()
Scripts = []
Scripts = GetScripts(ID)
scriptList = ThreadChunk(Scripts, 2)
for item in scriptList:
proc = Process(target=CreateScript, args=(item))
startedProcesses.append(proc)
proc.start()
#we must wait for the processes to finish before continuing
for process in startedProcesses:
process.join()
print "finished"
我将其传递到CreateScript中
def RunInThread(ID):
startedProcesses = list()
Scripts = []
Scripts = GetScripts(ID)
scriptList = ThreadChunk(Scripts, 2)
for item in scriptList:
proc = Process(target=CreateScript, args=(item))
startedProcesses.append(proc)
proc.start()
#we must wait for the processes to finish before continuing
for process in startedProcesses:
process.join()
print "finished"
这是我的脚本对象的输出
{u'timeInterval': u'1800', u'title': u'IT', u'attribute' : 'hello'}
事实:
是一个字典列表(根据您)scriptList
一次获取一个字典对于脚本列表中的项:
将字典传递给proc=Process(target=CreateScript,args=(item))
函数CreateScript
接收字典def CreateScript(scriptsToGenerate):
迭代字典的键对于scriptsToGenerate中的脚本:
尝试访问字典键(字符串)的如果脚本['title']=“IT”:
索引标题
所以不,这行不通。在某个点上,您可以迭代列表。您可能希望将脚本列表传递给
CreateScript
函数,因此您不应该迭代scriptList
John,我的意思是您在那里有一个json对象,它需要这样处理。我想你的意思是你能做到以下几点吗
def CreateScript(scriptsToGenerate):
#start = time.clock()
apiLocation = ""
saveFile = ""
i = json.loads(scriptsToGenerate)
if i['title'] == "IT":
time = i['timeInterval']
baseItem = ""
print i['title'], i['timeInterval']
p = json.dumps({u'timeInterval': u'1800', u'title': u'IT', u'attribute' : 'hello'})
CreateScript(p)
请显示用于调用
CreateScript
script
的确切代码与您认为的不同。解释器不会说谎。在调用进程(target=CreateScript,args=(item))
之前打印项目,看看会发生什么要加载json对象对其进行切片,请在之前执行json.loads()
如果脚本['title']=“it”
@AdemÖztaş它是JSON的一部分,由请求库作为GetScripts
函数的一部分加载。@poke right,我不使用请求库,这非常方便,将来可能会使用它。