嗨,我是python编程新手。我需要创建一个使用for循环的字典,并计算每个父键的状态。
我有一个家长,每个家长都有很多传感器。现在我必须数一数每个父母的状态(上/下)
Expected Results:
Device Name Up Sensors Down Sensors
Device-01 1 1
Device-02 2下面是我得到的API结果示例:
{
"sensors": [
{
"objid": 3227,
"parentid": 3222,
"device": "Device-1",
"sensor": "GPON 0/0/0",
"status": "Up",
},
{
"objid": 3228,
"parentid": 3222,
"device": "Device-1",
"sensor": "GPON 0/0/1",
"status": "Down",
},
{
"objid": 3229,
"parentid": 3223,
"device": "Device-2",
"sensor": "GPON 0/0/1",
"status": "Up",
},
{
"objid": 3230,
"parentid": 3223,
"device": "Device-2",
"sensor": "GPON 0/0/2",
"status": "Up",
},
}下面是我的views.py。我知道怎么数所有感应器。我的问题是如何获得每个家长的特定计数。
def dashboard(request):
response = requests.get('http://sample_api_url')
data = response.json()
all_up_sensors = 0
all_down_sensors = 0
all_devices = dict()
for device in data['sensors']:
parentid = device['parentid']
if device['status'] == "Up":
all_up_sensors +=1
else:
all_down_sensors +=1
device_info = {
"device" : device['device'],
"up_sensors" : ????,
"down_sensors" : ????,
}
all_devices[parentid] = device_info
context = {
"all_devices": all_devices,
"all_up_sensors": all_up_sensors,
"all_down_sensors": all_down_sensors,
}
return render(request, 'monitoring/dashboard.html', context)发布于 2020-02-12 07:55:00
使用简单的迭代。
Ex:
device_info = {}
for device in data['sensors']:
if device['device'] not in device_info:
device_info[device['device']] = {'up_sensors':0, 'down_sensors': 0} #Create default dict
if device['status']== 'Up': #Check if `status` is Up
device_info[device['device']]['up_sensors'] += 1 #Increment Count
if device['status']== 'Down': #Check if `status` is Down
device_info[device['device']]['down_sensors'] += 1 #Increment Count
print(device_info)输出:
{'Device-1': {'down_sensors': 1, 'up_sensors': 1},
'Device-2': {'down_sensors': 0, 'up_sensors': 2}}https://stackoverflow.com/questions/60183281
复制相似问题