2016-03-04 150 views
0

我不完全确定为什么即时获取字典的关键错误。我正尝试使用=符号创建多级字典,并获取指标上的关键错误,但不是前两个。python键字典错误多级字典

doc['timestamp'] 

doc['instance_id'] 

都工作得不错,但是当它到达度量它给了我一个指标关键错误。我不完全确定为什么。

doc = {} 
doc['timestamp'] = datetime.now()  
#doc['instance_id'] = get_cloud_app_name() 
doc['instance_id'] = "MyMac" 

cpu_dict_returned = get_cpu_info() 
doc['metrics']['cpu_usage']['user_cpu'] = cpu_dict_returned['user_cpu'] 
doc['metrics']["cpu_usage"]['system_cpu'] = cpu_dict_returned['system_cpu'] 
doc['metrics']["cpu_usage"]['idle_cpu'] = cpu_dict_returned['idle_cpu'] 
doc['metrics']["cpu_usage"]['cpu_count'] = cpu_dict_returned['cpu_count'] 

回答

5

必须使用他们之前创建的子dictionnaries:

doc = {} 
doc['timestamp'] = datetime.now()  
doc['instance_id'] = "MyMac" 

cpu_dict_returned = get_cpu_info() 
doc['metrics'] = { 
    'cpu_usage': 
     {k: cpu_dict_returned.get(k) 
     for k in ['user_cpu', 'system_cpu', 'idle_cpu', 'cpu_count']} 
} 

注意,子字典cpu_usage是:

doc = {} 
doc['timestamp'] = datetime.now()  
doc['instance_id'] = "MyMac" 

cpu_dict_returned = get_cpu_info() 
doc['metrics'] = {} 
doc['metrics']['cpu_usage'] = {} 
doc['metrics']['cpu_usage']['user_cpu'] = cpu_dict_returned['user_cpu'] 
doc['metrics']["cpu_usage"]['system_cpu'] = cpu_dict_returned['system_cpu'] 
doc['metrics']["cpu_usage"]['idle_cpu'] = cpu_dict_returned['idle_cpu'] 
doc['metrics']["cpu_usage"]['cpu_count'] = cpu_dict_returned['cpu_count'] 
+0

谢谢,我从来不知道我通常通过定义结构来创建字典。 –

0

您可以在此更简洁地使用字典理解做首先创建,然后插入嵌套字典。