解析嵌套Python dict

解析嵌套Python dict,python,json,dictionary,nested,Python,Json,Dictionary,Nested,我有一个嵌套字典,我正试图解析它,但似乎不知道如何访问第三级项。谢谢你的帮助 这是我的字典 { "FunctionName": "RDSInstanctStart", "LastModified": "2018-03-24T07:19:56.792+0000", "MemorySize": 128, "Environment": { "Variables": { "DBInstanceName": "test1234"

我有一个嵌套字典,我正试图解析它,但似乎不知道如何访问第三级项。谢谢你的帮助 这是我的字典

{
    "FunctionName": "RDSInstanctStart",
    "LastModified": "2018-03-24T07:19:56.792+0000",
    "MemorySize": 128,
    "Environment": {
        "Variables": {
            "DBInstanceName": "test1234"
        }
    },
    "Version": "$LATEST",
    "Role": "arn:aws:iam::xxxxxxx:role/lambda-start-RDS",
    "Timeout": 3,
    "Runtime": "python2.7",
    "TracingConfig": {
        "Mode": "PassThrough"
    },
    "CodeSha256": "tBdB+UDA9qlONGb8dgruKc6Gc82gvYLQwdq432Z0118=",
    "Description": "",
    "VpcConfig": {
        "SubnetIds": [],
        "SecurityGroupIds": []
    },
    "CodeSize": 417,
    "FunctionArn": "arn:aws:lambda:us-east-1:xxxxxxxx:function:RDSInstanctStart",
    "Handler": "lambda_function.lambda_handler"
}
我正在尝试访问关键变量的值 以下是我目前的代码:

try:           

 for evnt in funcResponse['Environment']['Variables']['DBInstanceName']:
            print (evnt[0])
except ClientError as e:
        print(e)
我得到的结果是

t
e
s
t
1
2
3
4    
如果我没有给出envt变量的索引,我会得到一个类型错误。

funcResponse['Environment']['Variables']['DBInstanceName']是一个字符串,但您正在循环它。字符串是单个字符的序列

如果在test1234中为character:printcharacter[0]执行了以下操作,您将得到相同的结果,并且您也可以删除[0]索引,因为character就像字符串一样,只包含一个字符

不要循环,只需打印:

evnt = funcResponse['Environment']['Variables']['DBInstanceName']
print(evnt)
如果要打印所有环境变量,则必须循环funcResponse['environment']['variables']字典中的项:

for name, value in funcResponse['Environment']['Variables'].items():
    print(name, value, sep=': ')

无论如何,funcResponse['Environment']['Variables']只是一个字典。将['DBInstanceName']添加到末尾将为'DBInstanceName'键提供值。

谢谢Martijn。我现在明白了。还感谢您为所有环境变量编写循环代码段。在某一点上,我也会这样做。作为一方,您可能对类似或其竞争对手的东西感兴趣,将嵌套集合视为具有复杂路径的平面集合,如键的“Environment/Variables/DBInstanceName”。