首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python计数字典

Python计数字典
EN

Stack Overflow用户
提问于 2020-02-12 07:36:14
回答 1查看 38关注 0票数 1

嗨,我是python编程新手。我需要创建一个使用for循环的字典,并计算每个父键的状态。

我有一个家长,每个家长都有很多传感器。现在我必须数一数每个父母的状态(上/下)

代码语言:javascript
复制
Expected Results:

Device Name     Up Sensors      Down Sensors
Device-01       1               1
Device-02       2

下面是我得到的API结果示例:

代码语言:javascript
复制
{
"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。我知道怎么数所有感应器。我的问题是如何获得每个家长的特定计数。

代码语言:javascript
复制
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)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-12 07:55:00

使用简单的迭代。

Ex:

代码语言:javascript
复制
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)

输出:

代码语言:javascript
复制
{'Device-1': {'down_sensors': 1, 'up_sensors': 1},
 'Device-2': {'down_sensors': 0, 'up_sensors': 2}}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60183281

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档