python - 计算字典的在线人数
问题描述
我有一本人们在线状态的字典,我想统计在线人数。例子 :
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。
我被卡住了,我不知道如何计算那本词典中的在线人数。那你能告诉我该怎么做吗?
解决方案
您需要在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')
推荐阅读
- apache-kafka - 即使 linger.ms 为 0,Kafka 超时异常
- mysql - 在where子句中使用时在mysql中成功添加序列号但未知列
- amazon-web-services - AWS,我应该将内存限制设置多高?
- python - Bootstrap Modal 不适用于 jinja 2 中的“for”
- reactjs - OnClick 反应按钮以显示表格
- javascript - 未捕获的类型错误:无法读取未定义 React 的属性“过滤器”
- angular - 如何在Angular中注入具有构造函数参数的对象?
- javascript - 如何使用 Javascript 在 Angular 中出现错误时在 src 图像之间切换?
- android - 如何将私有 android 应用程序分发到特定设备?
- google-colaboratory - 如何在 google colab 中运行 python 代码?