Python Dict键错误。如何遍历嵌套的dict并检查密钥

问题描述 投票:0回答:2

我有以下嵌套的字典,在下面尝试遍历。好吧,不一定要遍历,但我只想检查标签是否具有值“ EDD”。如果可以,那么我想触发其他操作。

我的问题是,标签键错误不断出现错误。

请执行该操作。

message.data = {
          "messages": [{
            "to": "wa-id",
            "from": "another-wa-id",
            "type": "text",
            "_vnd": {
              "v1": {
                "direction": "outbound",
                "in_reply_to": "an-earlier-inbound-external-id",
                "author": {
                  "name": "the name of the author",
                  "type": "SYSTEM | OPERATOR",
                },
                "labels": [{
                  "uuid": "the-uuid",
                  "value": "EDD"
                }]
              }
            }
          }, ]
        }

我的代码如下:

 whatsapp_contact_id = message.data
    print(whatsapp_contact_id.keys())
    list_data = whatsapp_contact_id["messages"]
    print(list_data)
    for dictionary_data in list_data:
        print(dictionary_data)
    dictionary_keys = dictionary_data.items()
    print(dictionary_keys)
    """
    EDD_label = dictionary_data["labels"]
    """
    EDD_label = dictionary_data.get('labels', 'could not find')
    print("The label is below")
    print(EDD_label) 
python arrays dictionary nested
2个回答
1
投票

假设结构保持不变,您想要的是:

whatsapp_contact_id = message.data
list_data = whatsapp_contact_id.get("messages")
dictionary_data = list_data.get("_vnd").get("v1")
labels_data = dictionary_data.get("labels")
EDD_label = labels_data.get("value", "could not find")

而且,您似乎已将代码粘贴了三遍。


0
投票

特别感谢大家@tennoshi。

此作品:

whatsapp_contact_id = message.data
    list_data = whatsapp_contact_id.get("messages")
    for dictionary_data in list_data:
        dictionary_data_2 = dictionary_data.get("_vnd").get("v1")
        labels_data = dictionary_data_2.get("labels")
        print(labels_data)
        for EDD in labels_data:
            EDD_string = EDD.get("value", "EDD label not present")
            print(EDD_string)```
© www.soinside.com 2019 - 2024. All rights reserved.