2016-11-21 86 views
-3

我试图应对JSON字典,看起来像以下:解析JSON字典具有未知值

{ 
    "Parameters": { 
     "IP": "192.168.1.40", 
     "TIMEOUT": 900, 
     "mode": 0 
    }, 

    "Device": { 
     "sector01": { 
      "nodes": ["node01", "node02"] 
     }, 
     "sector02": { 
      "nodes": ["node01"] 
     }, 
     "sector03": { 
      "nodes": ["node01","node02","node03"]  
     } 
    } 
} 

假设我对没有资料许多部门和节点如何存在,我想知道扇区的数量(以及每扇区有多少个节点)。 我能够找到的总扇区号:

len(data["Device"]) 

但是,每个扇区节点的总没有在我的情况更重要。

+2

所以,你想要在Device中的每个地图的节点值的长度求和?什么阻止你这样做? – jonrsharpe

+0

这看起来像是对字典的工作原理缺乏了解。试试:'len(data [“Device”] [“sector03”] [“nodes”])' – TehTris

+0

使用'for-loop'来获取扇区(一个接一个),而且你不必知道有多少您可以使用stectors(),然后您可以在扇区中获得'“nodes”来检查它的len()' – furas

回答

1

您可以使用for-loop让每一个“部门”(这不要紧,你有多少部门),然后就可以在部门得到“节点”,并检查len()

for key, val in data['Device'].items(): 
    print(key, len(val["nodes"])) 
0
import json 

your_json = """{ 
     "Parameters": { 
      "IP": "192.168.1.40", 
      "TIMEOUT": 900, 
      "mode": 0 
     }, 

     "Device": { 
      "sector01": { 
       "nodes": ["node01", "node02"] 
      }, 
      "sector02": { 
       "nodes": ["node01"] 
      }, 
      "sector03": { 
       "nodes": ["node01","node02","node03"]  
      } 
     } 
    }""" 

your_dict = json.loads(your_json) 
len_of_device = len(your_dict['Device']) 
dict_len_of_sectors = {} 
for key in your_dict['Device']: 
    dict_len_of_sectors[key] = len(your_dict['Device'][key]['nodes']) 

print(str(dict_len_of_sectors)) 

我建议在这里研究: https://docs.python.org/3/library/stdtypes.html?highlight=dict#dict