我正在计算状态为在线的人数。我创建了一个字典,还创建了一个计数变量来跟踪在线的人。下面是我的代码和错误日志。在下面的代码中,我期望count为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'
如果你想检查这个值,你可以使用变量v
访问它可以用
if v == "online":
不是
if status[k].key() == "Online":
为什么会出现错误?
status[k]
是字符串它是字典中的值,所以你不能对它调用key()
函数。要验证这一点,只需在循环中打印status[k]
即可观察到这一点。
在你的循环中,k
将是Alice, Bob等,v
将是" online ";或";offline"。没有需要调用的key()
函数
例如:
if v == 'online':
....
可以。请注意,求值是区分大小写的,并且您的示例中有混合大小写,因此需要保持一致。
说了这么多,你应该使用的是操作符。countOf,这更简单:
>>> statuses = {
... "Alice": "online",
... "Bob": "offline",
... "Eve": "online",
... }
>>> from operator import countOf
>>> countOf(statuses.values(), 'online')
2
>>> countOf(statuses.values(), 'offline')
1