代码之家  ›  专栏  ›  技术社区  ›  Kask

解析嵌套Python dict

  •  2
  • Kask  · 技术社区  · 7 年前

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

    {
        "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 变量,我得到一个类型错误。

    1 回复  |  直到 7 年前
        1
  •  4
  •   Martijn Pieters    7 年前

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

    如果你这样做了,你也会得到同样的结果: for character in "test1234": print(character[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' 钥匙