首页 > 解决方案 > 如何在嵌套字典(JSON - 文件)中使用 if/else?

问题描述

我有一个 JSON 文件:

[


{
    "schema":{"id":1},
    "rawdata":{},
    "enriched":{"name":"xy1"}
},




{
    "schema":{"id":2},
    "rawdata":{},
    "enriched":{"name":"xy2"}   
},


{ "schma":{"id":3}, "radata":{},"enrichd":{"name":"xy3"} 
},


{ "schema":{"id":3}, "radata":{},"enriched":{"name":"xy3"} 
},


{"name":"xy200"},


{
    "schema":{"id":4},
    "rawdata":{},"enriched":{"name":"xy4"}   
}

]

我必须从“name”中过滤嵌套条目的数量:“xy1”。简而言之:我需要“xy”之后的每个数字。

我已经写的代码是这样的:

    for value in data:
   
    if value["enriched"]:
        get_char = value["enriched"]["name"]
        num = get_char[2:]
        print(f"{num}")
        
     
    elif value["enrichd"]:
        get_char = value["enrichd"]["name"]
        num = get_char[2:]
        print(f"{num}")
    
    elif value["name"]:
        get_char = value["name"]
        num = get_char[2:]
        print(f"{num}")
    
    else:
        print("test")

我的错误信息是这样的:

1
2

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
<ipython-input-155-13d4f2ca308f> in <module>
     52     for value in data:
     53         try:
---> 54             if value["enriched"]:
     55                 get_char = value["enriched"]["name"]
     56                 num = get_char[2:]

KeyError: 'enriched'

但我不明白为什么我的循环不使用我写的 elif。也许有人可以帮助我:)

标签: pythondictionaryif-statement

解决方案



推荐阅读