我正在尝试计算状态为在线的人数。我讨厌创建字典,也创建了一个计数变量来跟踪在线的人。下面是我的代码和错误日志。在下面的代码中,我希望计数为2。
class Solution(object):
def getStatus(self, status):
count = 0
for k, v in status.items():
# I even tried to used json.load(status) to parse but it doesn't help
if status[k].key() == "Online":
count += 1
else:
pass
return count
if __name__ == "__main__":
statuses = {
"Alice": "online",
"Bob": "offline",
"Eve": "online",
}
print(Solution().getStatus(statuses))
下面是我的错误日志
if status[k].key() == "Online":
AttributeError: 'str' object has no attribute 'key'
2条答案
按热度按时间hof1towb1#
如果要检查该值,可以使用变量
v
访问它您可以使用
代替
为什么会出现错误?
status[k]
是string,它是dict中的值,所以你不能在它上面调用函数key()
。要验证这一点,只需在你的循环中打印status[k]
来观察这一点。dsekswqp2#
在循环中,
k
将代表Alice、Bob等,v
将代表"online"或"offline",不需要调用key()
函数。例如:
注意,计算是区分大小写的,而您的示例是混合大小写的,因此需要保持一致。
话虽如此,您应该使用的是operator.countOf,它要简单得多: