[英]Why does my string doesn't get modified to one of the values present in the dictionary in Python after length of string becomes equal to key?
[英]Why does my for loop doesn't count correct number of values that are equal to 'Online' in a dictionary in Python?
我正在嘗試計算狀態為在線的人數。 我討厭創建字典,還創建了一個計數變量來跟蹤在線用戶。 下面是我的代碼和錯誤日志。 在下面的代碼中,我希望計數為 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]
是字典中的值的字符串,所以你不能在它上面調用 function key()
。 要驗證這一點,只需在循環中打印status[k]
以觀察這一點。
在你的循環中, k
將是 Alice、Bob 等,而v
將是“在線”或“離線”。 沒有要調用的key()
function。
例如:
if v == 'online':
....
那行得通。 請注意,評估區分大小寫,並且您的示例混合大小寫,因此需要保持一致。
話雖如此,您應該使用operator.countOf ,它更簡單:
>>> statuses = {
... "Alice": "online",
... "Bob": "offline",
... "Eve": "online",
... }
>>> from operator import countOf
>>> countOf(statuses.values(), 'online')
2
>>> countOf(statuses.values(), 'offline')
1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.