Python 如何转换字典列表?

Python 如何转换字典列表?,python,json,Python,Json,我有一个列表,我想把它转换成json。但我得到了以下错误: trackerror:list indices must be integers or slices, not str 及 可能是什么 观察: list indices must be integers or slices, not str 它是在这一行中生成的:url=variables[“url”] 我有: event= [[{'operacion': 'generar','url':'xxxxxxxx', 'items':

我有一个列表,我想把它转换成json。但我得到了以下错误:

trackerror:list indices must be integers or slices, not str 

可能是什么

观察:

list indices must be integers or slices, not str
它是在这一行中生成的:
url=variables[“url”]

我有:

event=
[[{'operacion': 'generar','url':'xxxxxxxx', 'items': [{'unidad': 'un', codigo'001'}]
}]]
我需要(json):

代码:

def lambda_处理程序(事件、上下文):
payload=json.dumps(事件,缩进=4)
variables=json.loads(有效负载)
url=variables[“url”]---------------->>>>我这里也有一个错误。这应该可以:

event=[[{'operacion': 'generar','url':'xxxxxxxx', 'items': [{'unidad': 'un', 'codigo':'001'}]}]]                                                                                    

json.dumps(event[0][0])

# '{"operacion": "generar", "url": "xxxxxxxx", "items": [{"unidad": "un", "codigo": "001"}]}'

注意:您的字典键
codigo
格式不正确。如果这不是一个简单的打字错误时,使这篇文章,你将需要修复这之前,任何处理可以完成。然而,由于Python会抛出一个错误,我猜这只是你文章中的一个格式错误

您的
事件
列表太深了一层,没有任何意义。根据所需的输出描述,您可以执行以下操作:

事件=[
[
{'operacion':'generar','url':'xxxxxxxx','items':[
{'unidad':'un','codigo':'001'}
]
}
]
]
extractedEvents=[]
对于事件中的e:
extractedEvents.append(e[0])
打印(提取事件)
  • 如果您花时间格式化原始源代码(类似于我所做的),您将更容易看到您正在处理的内容
  • 通过使用
    e[0]
    遍历冗余列表索引,我们将对象展平一级,正如您所示

  • 您所要做的就是从嵌套列表中提取dict。这是
    事件[0][0]
    ,我相信。你能分享更多关于你的程序上下文的信息吗?嗨,我试过了,但它不起作用。payload=json.dumps(event,indent=4)你需要像@suppressionlayer那样使用事件[0][0],或者如果你期望发生多个事件,就使用像我这样的循环。另外,您的
    codigo
    词典条目在原始postHi中有格式错误,感谢您的回答,如果是编写错误,json对它来说非常重要。现在字典看起来更小了,但当我把它传递给JSON时。现在:事件=[{'operation':'generate','url':'xxxxxxxx','items':[{'unit':'a','code':'001'}]}]我需要:事件={'operation':“generate”,“url:”xxxxxxxx”,“items:[{'unit of_of_measurement:“a”,“code:”001'}}}是的,我的错了,我假设你的事件对象可能有很多条目。所以在我的代码中,因为
    extractedEvents
    是一个列表,所以需要通过
    extractedEvents[0]
    获取第一个元素。但在现实中,如果你确信你只会有一个事件,那么就使用上面@pressurationlayer的解决方案。
    event=
    { 
       "operacion":"generar",
       "url":"xxxxxxxx,"
       "items":[ 
          { 
             "unidad_de_medida":"un",
             "codigo":"001"
          }
       ]
    }
    
    def lambda_handler(event, context):
        payload=json.dumps(event,indent=4) 
        variables= json.loads(payload)
        url =variables["url"] --------->>>>I have an error here too.<<<<<<<-----------
        headers={'content-type': "application/json",'authorization': "xxxxxxxx",'cache-`enter code here`control': "no-cache",'postman-token': "xxxxxxxx"}     
        response = requests.request("POST", url, data=payload, headers=headers) 
    
    event=[[{'operacion': 'generar','url':'xxxxxxxx', 'items': [{'unidad': 'un', 'codigo':'001'}]}]]                                                                                    
    
    json.dumps(event[0][0])
    
    # '{"operacion": "generar", "url": "xxxxxxxx", "items": [{"unidad": "un", "codigo": "001"}]}'