首页 > 解决方案 > 计算字典的在线人数

问题描述

我有一本人们在线状态的字典,我想统计在线人数。例子 :

statuses = {
"Alice": "online",
"Bob": "offline",
"Eve": "online",
}

我尝试了这段代码来做到这一点

def online_count(PeopleDictionary):
    for person in PeopleDictionary.items():
        if person[1] == 'online':
            count = person.count('online')
            return count
statuses = {
    "Alice": "online",
    "Bob": "offline",
    "Eve": "online",
}
print(online_count(statuses))

但在输出中,它给了我 1 而不是 2。

我被卡住了,我不知道如何计算那本词典中的在线人数。那你能告诉我该怎么做吗?

标签: pythonpython-3.xpycharm

解决方案


您需要在count每次循环中添加,而不仅仅是分配它。

person.count('online')将永远是1,除非这个人的名字也是online

此外,您应该在循环完成后返回,而不是在循环期间返回。

def online_count(PeopleDictionary):
    count = 0
    for status in PeopleDictionary.values():
        if status == 'online':
            count += 1
    return count

但这可以使用以下sum()函数来简化:

def online_count(PeopleDictionary):
    return sum(status == 'online' for status in PeopleDictionary.values())

如果不需要items()密钥,则无需使用values(),仅用于获取状态。

您还可以转换values()为列表并使用count()

def online_count(PeopleDictionary):
    return list(PeopleDictionary.values()).count('online')

推荐阅读