Python 字符串索引必须是整数

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

我试图访问python中的JSON对象/字典,但出现错误:

TypeError:如果脚本['title'],字符串索引必须是整数== “它”:

这是我尝试访问字典中特定密钥的代码:

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,我不使用请求库,这非常方便,将来可能会使用它。